home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Power Programmierung
/
Power-Programmierung CD 2 (Tewi)(1994).iso
/
doc
/
intlist
/
interrup.lst
< prev
next >
Wrap
File List
|
1991-05-11
|
2MB
|
62,191 lines
Interrupt List Release 33 Last change 1/3/93
This compilation is Copyright (c) 1989,1990,1991,1992,1993 Ralf Brown
---------------------------------------------
Please redistribute the following files unmodified as a group, in a pair of
archives named INTER33A and INTER33B (preferably the original authenticated
PKZIP archives):
INTERRUP.1ST the read-me file, containing credits, availability info
INTERRUP.A INT 00 through INT 14 \
INTERRUP.B INT 15 through INT 1F \ total 1037 pages at
INTERRUP.C INT 20 thru INT 21/7F \ 60 lines per page,
INTERRUP.D INT 21/80 through INT 2E \ 1110 with INTPRINT -p
INTERRUP.E INT 2F through INT 2F/BF / (4500 entries)
INTERRUP.F INT 2F/C0 through INT 4F /
INTERRUP.G INT 50 through INT 67 /
INTERRUP.H INT 68 through INT FF /
INTERRUP.PRI a brief introduction to interrupts
INTPRINT.COM a simple formatter that also generates a list summary
INTPRINT.DOC instructions for INTPRINT
GLOSSARY.LST a glossary of terms, abbreviations, and acronyms
MEMORY.LST format of the BIOS data area
The following files should be distributed in an archive called INTER33C:
INT.COM invoke interrupts from commandline
INT2GUID.* convert list into TurboPower GUIDE or POPHELP database
INT2HLP.BAT Perl script to convert list into QuickHelp database
INT2QH.* program to convert list into QuickHelp database
INTHELP.* convert list into TurboPower GUIDE database
INTLIST.E Epsilon extension for handling list
INTPRINT.C source code for INTPRINT
---------------------------------------------
If you notice any mistakes or omissions, please let me know! It is only with
YOUR help that the list can continue to grow at the current rate. Please send
all changes to me rather than distributing a modified version of the list.
Please read the file INTERRUP.1ST before asking me any questions. You may find
that they have already been addressed.
Ralf Brown
ARPA: ralf@cs.cmu.edu
UUCP: {ucbvax,harvard}!cs.cmu.edu!ralf
BIT: ralf%cs.cmu.edu@carnegie
FIDO: Ralf Brown 1:129/26.1
or post a message to me in the DR_DEBUG echo (I probably won't see it
unless you address it to me)
CIS: >INTERNET:ralf@cs.cmu.edu
I reply to all e-mail submissions and inquiries, but some of my replies bounce
because of bad return paths. If you don't get a response from me within a
reasonable period of time, send it again with a better return path (starting at
harvard or ucbvax for UUCP, from the ARPA Internet for others).
---------------------------------------------
See INTERRUP.1ST for the key to system abbreviations and a list of the
trademarks mentioned here.
---------------------------------------------
DISCLAIMER: THIS MATERIAL IS PROVIDED "AS IS". I verify the information
contained in this list to the best of my ability, but I cannot be held
responsible for any problems caused by use or misuse of the information,
especially for those functions not officially documented. If it is marked
"internal" or undocumented, you should check it carefully to make sure it
works the same way in your version of the software (and please let me know
whether or not it works the same way). Information marked with "???" is
known to be incomplete or guesswork.
---------------------------------------------
The use of -> instead of = signifies that the indicated register or register
pair contains a pointer to the specified item, rather than the item itself.
One or more letters may follow the interrupt number; they have the following
meanings: U - undocumented function, u - partially documented function,
P - available only in protected mode, R - available only in real or V86 mode
----------00---------------------------------
INT 00 - CPU-generated - DIVIDE ERROR
Desc: generated if the divisor of a DIV or IDIV instruction is zero or the
quotient overflows the result register; DX and AX will be unchanged.
Notes: on an 8086/8088, the return address points to the following instruction
on an 80286+, the return address points to the divide instruction
SeeAlso: INT 04
----------01---------------------------------
INT 01 - CPU-generated - SINGLE STEP
Desc: generated after each instruction if TF (trap flag) is set; TF is
cleared on invoking the single-step interrupt handler
Notes: interrupts are prioritized such that external interrupts are invoked
after the INT 01 pushes CS:IP/FLAGS and clears TF, but before the
first instruction of the handler executes
used by debuggers for single-instruction execution tracing, such as
MSDOS DEBUG's T command
SeeAlso: INT 03
----------01---------------------------------
INT 01 - CPU-generated (80386+) - DEBUGGING EXCEPTIONS
Desc: generated by the CPU on various occurrences which may be of interest
to a debugger program
Note: events which may trigger the interrupt:
Instruction address breakpoint fault - will return to execute inst
Data address breakpoint trap - will return to following instruction
General detect fault, debug registers in use
Task-switch breakpoint trap
SeeAlso: INT 03
----------02---------------------------------
INT 02 - external hardware - NON-MASKABLE INTERRUPT
Desc: generated by the CPU when the input to the NMI pin is asserted
Notes: return address points to start of interrupted instruction on 80286+
although the Intel documentation states that this interrupt is
typically used for power-failure procedures, it has many other uses
on IBM-compatible machines:
Memory parity error: all except Jr, CONV, and some machines
without memory parity
Breakout switch on hardware debuggers
Coprocessor interrupt: all except Jr and CONV
Keyboard interrupt: Jr, CONV
I/O channel check: CONV, PS50+
Disk-controller power-on request: CONV
System suspend: CONV
Real-time clock: CONV
System watch-dog timer, time-out interrupt: PS50+
DMA timer time-out interrupt: PS50+
Low battery: HP 95LX
Module pulled: HP 95LX
----------03---------------------------------
INT 03 - CPU-generated - BREAKPOINT
Desc: generated by the one-byte breakpoint instruction (opcode CCh)
Notes: used by debuggers to implement breakpoints, such as MSDOS DEBUG's G
command
also used by Turbo Pascal versions 1,2,3 when {$U+} specified
return address points to byte following the breakpoint instruction
SeeAlso: INT 01
----------0309--SI4647-----------------------
INT 03 - Soft-ICE BACK DOOR COMMANDS
AH = 09h
SI = 4647h ('FG')
DI = 4A4Dh ('JM')
AL = function
10h display string in Soft-ICE window
DS:DX -> ASCIZ string to display (max 100 bytes, 0Dh OK)
11h execute Soft-ICE command
DS:DX -> ASCIZ command string (max 100 bytes, 0Dh OK)
12h get breakpoint information
Return: BH = entry number of last breakpoint set
BL = type of last breakpoint set
00h BPM (breakpoint register types)
01h I/O
02h INTerrupt
03h BPX (INT 03h-style breakpoint)
04h reserved
05h range
DH = entry number of last breakpoint to be triggered
DL = type of last triggered breakpoint (see above)
Desc: this API allows application programs to control some aspects of the
Soft-ICE debugger
Program: Soft-ICE is a debugger by Nu-Mega Technologies, Inc.
----------04---------------------------------
INT 04 - CPU-generated - INTO DETECTED OVERFLOW
Desc: the INTO instruction will generate this interrupt if OF (Overflow Flag)
is set; otherwise, INTO is effectively a NOP
Note: may be used for convenient overflow testing (to prevent errors from
propagating) instead of JO or a JNO/JMP combination
SeeAlso: INT 00
----------05---------------------------------
INT 05 - PRINT SCREEN
Desc: dump the current text screen to the first printer
Notes: normally invoked by the INT 09 handler when PrtSc key is pressed, but
may be invoked directly by applications
byte at 0050h:0000h contains status used by default handler
00h not active
01h PrtSc in progress
FFh last PrtSc encountered error
default handler is at F000h:FF54h in IBM PC and 100%-compatible BIOSes
SeeAlso: INT 10/AH=12h/BL=20h
----------05---------------------------------
INT 05 - CPU-generated (80186+) - BOUND RANGE EXCEEDED
Desc: generated by BOUND instruction when the value to be tested is less than
the indicated lower bound or greater than the indicated upper bound.
Note: returning from this interrupt re-executes the failing BOUND instruction
----------06---------------------------------
INT 06 - CPU-generated (80286+) - INVALID OPCODE
Desc: this interrupt is generated when the CPU attempts to execute an
invalid opcode (most protected-mode instructions are considered
invalid in real mode) or a BOUND, LDS, LES, or LIDT instruction
which specifies a register rather than a memory address
Notes: return address points to beginning of invalid instruction
with proper programming, this interrupt may be used to emulate
instructions which do not exist; many 386 BIOSes emulate the 80286
undocumented LOADALL instruction which was removed from the 80386+
SeeAlso: INT 0C"CPU",INT 0D"CPU"
----------06---------------------------------
INT 06 C - HP 95LX - SLEEP/WAKEUP
Desc: this interrupt is called just before going into light or deep
(shutdown) sleep and just after returning from light or deep sleep
SeeAlso: INT 0B"HP 95LX",INT 15/AX=4DD4h,INT 15/AH=4Eh
----------07---------------------------------
INT 07 - CPU-generated (80286+) - PROCESSOR EXTENSION NOT AVAILABLE
Desc: this interrupt is automatically called if a coprocessor instruction is
encountered when no coprocessor is installed
Note: can be used to emulate a numeric coprocessor in software
SeeAlso: INT 09"MATH UNIT PROTECTION"
----------08---------------------------------
INT 08 - IRQ0 - SYSTEM TIMER
Desc: generated 18.2 times per second by channel 0 of the 8254 system timer,
this interrupt is used to keep the time-of-day clock updated
Notes: programs which need to be invoked regularly should use INT 1C unless
they need to reprogram the timer while still keeping the time-of-day
clock running at the proper rate
default handler is at F000h:FEA5h in IBM PC and 100%-compatible BIOSes
may be masked by setting bit 0 on I/O port 21h
SeeAlso: INT 1C,INT 4A,INT 50"DESQview",INT 58"DoubleDOS",INT 70,INT 78"GO32"
----------08---------------------------------
INT 08 - CPU-generated (80286+) - DOUBLE EXCEPTION DETECTED
Desc: called when multiple exceptions occur on one instruction, or an
exception occurs in an exception handler
Notes: called in protected mode if an interrupt above the defined limit of
the interrupt vector table occurs
return address points at beginning of instruction with errors or the
beginning of the instruction which was about to execute when the
external interrupt caused the exception
if an exception occurs in the double fault handler, the CPU goes into
SHUTDOWN mode (which circuitry in the PC/AT converts to a reset);
this "triple fault" is a faster way of returning to real mode on
many 80286 machines than the standard keyboard controller reset
----------09---------------------------------
INT 09 - IRQ1 - KEYBOARD DATA READY
Desc: this interrupt is generated when data is received from the keyboard.
This is normally a scan code (from either a keypress *or* a key
release), but may also be an ACK or NAK of a command on AT-class
keyboards.
Notes: this IRQ may be masked by setting bit 1 on I/O port 21h
if the BIOS supports an enhanced (101/102-key) keyboard, it calls
INT 15/AH=4Fh after reading the scan code from the keyboard and
before further processing; all further processing uses the scan
code returned from INT 15/AH=4Fh
the default interrupt handler is at F000h:E987h in 100%-compatible
BIOSes
the interrupt handler performs the following actions for certain
special keystrokes:
Ctrl-Break clear keyboard buffer, place word 0000h in buffer,
invoke INT 1B, and set flag at 0040h:0071h
SysRq invoke INT 15/AH=85h
Ctrl-Numlock place system in a tight wait loop until next INT 09
Ctrl-Alt-Del jump to BIOS startup code (either F000h:FFF0h or the
destination of the jump at that address)
Shift-PrtSc invoke INT 05
DRDOS hooks this interrupt to control the cursor shape (underscore/
half block) for overwrite/insert mode
DR Multiuser DOS hooks this interrupt for cursor shape control and to
control whether Ctrl-Alt-Del reboots the current session or the
entire system
SeeAlso: INT 05,INT 0B"HP 95LX",INT 15/AH=4Fh,INT 15/AH=85h,INT 16,INT 1B
SeeAlso: INT 2F/AX=A901h,INT 51"DESQview",INT 59"DoubleDOS",INT 79"GO32"
Values for scan code:
01h Esc 31h N
02h 1 ! 32h M
03h 2 @ 33h , < 63h F16
04h 3 # 34h . > 64h F17
05h 4 $ 35h / ? 65h F18
06h 5 % 36h Right Shift 66h F19
07h 6 ^ 37h Grey* 67h F20
08h 7 & 38h Alt 68h F21
09h 8 * 39h SpaceBar 69h F22
0Ah 9 ( 3Ah CapsLock 6Ah F23
0Bh 0 ) 3Bh F1 6Bh F24
0Ch - _ 3Ch F2 6Ch --
0Dh = + 3Dh F3 6Dh EraseEOF
0Eh Backspace 3Eh F4
0Fh Tab 3Fh F5 6Fh Copy/Play
10h Q 40h F6
11h W 41h F7
12h E 42h F8 72h CrSel
13h R 43h F9
14h T 44h F10 74h ExSel
15h Y 45h NumLock 75h --
16h U 46h ScrollLock 76h Clear
17h I 47h Home
18h O 48h UpArrow
19h P 49h PgUp
1Ah [ { 4Ah Grey-
1Bh ] } 4Bh LeftArrow
1Ch Enter 4Ch Keypad 5
1Dh Ctrl 4Dh RightArrow
1Eh A 4Eh Grey+
1Fh S 4Fh End
20h D 50h DownArrow E0h prefix code
21h F 51h PgDn E1h prefix code
22h G 52h Ins FAh ACK
23h H 53h Del FEh RESEND
24h J 54h SysRq FFh kbd error/buffer full
25h K
26h L
27h ; : 57h F11
28h ' " 58h F12
29h ` ~
2Ah Left Shift 5Ah PA1
2Bh \ | 5Bh F13
2Ch Z 5Ch F14
2Dh X 5Dh F15
2Eh C
2Fh V
30h B
Note: scan codes 57h-E1h are only available on the extended (101/102-key)
keyboard and Host Connected (122-key) keyboard; scan codes 5Ah-76h
are only available on the 122-key keyboard
----------09---------------------------------
INT 09 - CPU-generated (80286,80386) - PROCESSOR EXTENSION PROTECTION ERROR
Desc: called if the coprocessor attempts to access memory outside a segment
boundary; it may occur at an arbitrary time after the coprocessor
instruction was issued
Note: until the condition is cleared or the coprocessor is reset, the only
coprocessor instruction which may be used is FNINIT; WAIT or other
coprocessor instructions will cause a deadlock because the
coprocessor is still busy waiting for data
SeeAlso: INT 07"CPU"
----------09---------------------------------
INT 09 P - internal hardware - RESERVED BY Intel (80486)
Note: this exception has been moved to INT 0D
SeeAlso: INT 09"MATH",INT 0D
----------0A---------------------------------
INT 0A - IRQ2 - LPT2 (PC), VERTICAL RETRACE INTERRUPT (EGA,VGA)
Notes: the TOPS and PCnet adapters use this interrupt request line by default
DOS 3.2 revectors IRQ2 to a stack-switching routine
on ATs and above, the physical data line for IRQ2 is labeled IRQ9 and
connects to the slave 8259. The BIOS redirects the interrupt for
IRQ9 back here.
under DESQview, only the INT 15h vector and BASIC segment address (the
word at 0000h:0510h) may be assumed to be valid for the handler's
process
many VGA boards do not implement the vertical retrace interrupt,
including the IBM VGA Adapter where the traces are either cut or
removed
SeeAlso: INT 52"DESQview",INT 5A"DoubleDOS",INT 71,INT 7A"GO32"
----------0A---------------------------------
INT 0A - IRQ2 - Tandy 1000-series HARD DISK
Note: may be masked by setting bit 2 on I/O port 21h
SeeAlso: INT 52"DESQview",INT 5A"DoubleDOS",INT 71
----------0A---------------------------------
INT 0A - IRQ2 - ROLAND MPU MIDI INTERFACE
Note: newer Roland cards and MIDI interfaces by other manufacturers use
a jumper-selectable IRQ, but software and hardware generally defaults
to IRQ2
SeeAlso: INT 52"DESQview",INT 5A"DoubleDOS",INT 71,INT 7A"GO32"
----------0A---------------------------------
INT 0A P - CPU-generated (80286+) - INVALID TASK STATE SEGMENT
Desc: automatically called during a task switch if the new TSS specified by
the task gate is invalid for any of the following reasons:
TSS limit is less than 43 (80286) or 103 (80386/80486)
LDT selector invalid or segment not present
null SS selector, or SS selector outside LDT/GDT limit
stack segment is read-only
stack segment DPL differs from new CPL, or RPL <> CPL
CS selector is outside LDT/GDT limit or not code
non-conforming code segment's DPL differs from CPL
conforming code segment's DPL > CPL
DS/ES selectors outside LDT/GDT limit or not readable segments
Note: the handler must use a task gate in order to have a valid TSS under
which to execute; it must also reset the busy bit in the new TSS
SeeAlso: INT 0B"CPU"
----------0B---------------------------------
INT 0B - IRQ3 - SERIAL COMMUNICATIONS (COM2)
Notes: the TOPS and PCnet adapters use this interrupt request line as an
alternate
on PS/2's, COM2 through COM8 share this interrupt; on many PC's, COM4
shares this interrupt
may be masked by setting bit 3 on I/O port 21h
SeeAlso: INT 0C"COM1",INT 53"DESQview",INT 5B"DoubleDOS",INT 7B"GO32"
----------0B---------------------------------
INT 0B P - CPU-generated (80286+) - SEGMENT NOT PRESENT
Desc: generated when loading a segment register if the segment descriptor
indicates that the segment is not currently in memory, unless the
segment is an LDT (see INT 0A"CPU") or stack segment (see
INT 0C"CPU") needed by a task switch
Note: may be used to implement virtual memory by loading in segments as they
are accessed, clearing the "not present" bit after loading
SeeAlso: INT 0A"CPU",INT 0E"hardware"
----------0B---------------------------------
INT 0B - HP 95LX - LOW-LEVEL KEYBOARD HANDLER
Desc: this is the lowest-level keyboard handler on an HP 95LX palmtop
Note: debounces key, places the keycode in I/O register 60h, and calls INT 09
SeeAlso: INT 09,INT 0D"HP 95LX",INT 15/AX=4DD4h
----------0C---------------------------------
INT 0C - IRQ4 - SERIAL COMMUNICATIONS (COM1)
Notes: on many PC's, COM3 shares this interrupt
may be masked by setting bit 4 on I/O port 21h
this vector is modified but not restored by Direct Access v4.0, and
may be left dangling by other programs written with the same version
of compiled BASIC
SeeAlso: INT 0B"COM2",INT 54"DESQview",INT 5C"DoubleDOS",INT 7C"GO32"
----------0C---------------------------------
INT 0C - CPU-generated (80286+) - STACK FAULT
Desc: this interrupt is generated in protected mode on a stack overflow or
underflow, or if an inter-level transition or task switch references
a stack segment marked "not present"; it is generated in real mode
on accessing a word operand at SS:FFFFh
Note: the 80286 will shut down in real mode if SP=1 before a push. On the
PC AT and compatibles, external circuitry generates a reset on
shutdown.
SeeAlso: INT 0B"CPU",INT 0D"CPU"
----------0C---------------------------------
INT 0C - IBM SYSTEM 36/38 WORKSTATION EMULATION - API POINTER
Call offset 100h in the interrupt handler's segment with
AH = function
03h update screen
05h select next session
AL = session number (00h-03h)
Return: AL = session type code
00h not active
01h display session
02h printer session
FEh invalid session number
DS = requested session's data segment (0 if not active)
Return: ???
Format of emulator's data area (offset from interrupt handler's segment):
Offset Size Description
13Eh BYTE bit flags for status line indicators turned on since this byte
last zerod
13Fh BYTE bit flags for status line indicators turned off since this
byte last set to FFh
140h WORD offset of EBCDIC to ASCII translation
146h WORD offset of EBCDIC screen buffer
148h WORD offset of EC (engineering change) level signature
150h BYTE "KEYI"
151h BYTE 5250 key scan code to be sent to remote
15Bh BYTE "SYSAV"
15Dh BYTE 5250 cursor column
15Eh BYTE 5250 cursor row
167h BYTE "DVCTAD"
178h BYTE "FLAGS"
184h BYTE "SESSNOAD"
193h BYTE "STNAD"
198h BYTE "NSDS"
----------0D---------------------------------
INT 0D - IRQ5 - FIXED DISK (PC,XT), LPT2 (AT), reserved (PS/2)
Notes: under DESQview, only the INT 15h vector and BASIC segment address (the
word at 0000h:0510h) may be assumed to be valid for the handler's
process
may be masked by setting bit 5 on I/O port 21h
SeeAlso: INT 0E"IRQ6",INT 0F"IRQ7",INT 55"DESQview",INT 5D"DoubleDOS"
SeeAlso: INT 7D"GO32"
----------0D---------------------------------
INT 0D - IRQ5 - Tandy 1000 60 Hz RAM REFRESH
Desc: used to ensure that the dynamic RAM retains its contents
SeeAlso: INT 55
----------0D---------------------------------
INT 0D - HP 95LX - INFRARED INTERRUPT
Desc: this interrupt is used to perform communications over the infrared
data link
SeeAlso: INT 0B"HP 95LX",INT 0E"HP 95LX",INT 15/AX=4DD4h
----------0D---------------------------------
INT 0D - CPU-generated (80286+) - GENERAL PROTECTION VIOLATION
Desc: the CPU generates this interrupt when it detects a protection violation
which does not fit under any other category having a separate
interrupt
Notes: called in real mode when
an instruction accesses a word operand located at offset FFFFh in
segment CS, DS, ES, FG, or GS
a PUSH MEM or POP MEM instruction contains an invalid bit encoding
in the second byte
an instruction exceeds the maximum length allowed (10 bytes for
80286, 15 bytes for 80386/80486)
an instruction wraps from offset FFFFh to offset 0000h
called in protected mode on protection violations not covered by INT 06
through INT 0C, including
segment limit violations
write to read-only segments
accesses using null DS or ES selectors
accesses to segments with privilege greater than CPL
wrong descriptor type
called on 80486 protected-mode floating-point protection fault
SeeAlso: INT 09"80486",INT 0C"STACK"
----------0E---------------------------------
INT 0E - IRQ6 - DISKETTE CONTROLLER
Desc: this interrupt is generated by the floppy disk controller on
completion of an operation
Notes: default handler is at F000h:EF57h in IBM PC and 100%-compatible BIOSes
may be masked by setting bit 6 on I/O port 21h
SeeAlso: INT 0D"IRQ5",INT 56"DESQview",INT 5E"DoubleDOS",INT 7E"GO32"
----------0E---------------------------------
INT 0E - CPU-generated (80386+ native mode) - PAGE FAULT
Desc: this interrupt is generated in protected and virtual-86 modes on
attempting to access a 4K memory page whose page table entry has
the "present" bit cleared
Note: used to implement virtual memory
SeeAlso: INT 0B"hardware"
----------0E---------------------------------
INT 0E - HP 95LX - EXTERNAL CARD INTERRUPT
SeeAlso: INT 0D"HP 95LX",INT 0F"HP 95LX",INT 15/AX=4DD4h
----------0F---------------------------------
INT 0F - IRQ7 - PARALLEL PRINTER
Desc: this interrupt is generated by the LPT1 printer adapter when the
printer becomes ready
Notes: most printer adapters do not reliably generate this interrupt
the 8259 interrupt controller generates an interrupt corresponding to
IRQ7 when an error condition occurs
SeeAlso: INT 0D"LPT2",INT 57"DESQview",INT 5F"DoubleDOS",INT 7F"GO32"
----------0F---------------------------------
INT 0F - HP 95LX - REAL-TIME CLOCK
SeeAlso: INT 0E"HP 95LX",INT 15/AX=4DD4h,INT 70
----------10---------------------------------
INT 10 - CPU-generated (80286+) - COPROCESSOR ERROR
Desc: this interrupt is generated by the CPU when the -ERROR pin is asserted
by the coprocessor
Note: AT's and clones usually wire the coprocessor to use IRQ13, but not all
get it right
SeeAlso: INT 09"hardware",INT 75
----------1000-------------------------------
INT 10 - VIDEO - SET VIDEO MODE
AH = 00h
AL = mode (see below)
Return: AL = video mode flag (Phoenix BIOS)
20h mode > 7
30h modes 0-5 and 7
3Fh mode 6
AL = CRT controller mode byte (Phoenix 386 BIOS v1.10)
Notes: IBM standard modes do not clear the screen if the high bit of AL is set
(EGA or higher only)
the Tseng ET4000 chipset is used by the Orchid Prodesigner II, Diamond
SpeedSTAR VGA, Groundhog Graphics Shadow VGA, Boca Super X VGA,
Everex EV-673
the installation check for Ahead adapters is the signature "AHEAD" at
C000h:0025h
the installation check for Paradise adapters is the signature "VGA=" at
C000h:007Dh
the installation check for Oak Tech OTI-037/057/067/077 chipsets is the
signature "OAK VGA" at C000h:0008h
the installation check for ATI adapters is the signature "761295520" at
C000h:0031h; the byte at C000h:0043h indicates the chipset revision:
31h for 18800
32h for 18800-1
33h for 18800-2
34h for 18800-4
35h for 18800-5
the two bytes at C000h:0040h indicate the adapter type
"22" EGA Wonder
"31" VGA Wonder
"32" EGA Wonder800+
the byte at C000h:0042h contains feature flags
bit 1: mouse port present
bit 4: programmable video clock
the byte at C000h:0044h contains additional feature flags if chipset
byte > 30h
bit 0: 70 Hz non-interlaced display
bit 1: Korean (double-byte) characters
bit 2: 45 MHz memory clock rather than 40 MHz
bit 3: zero wait states
bit 4: paged ROMs
bit 6: no 8514/A monitor support
bit 7: HiColor DAC
the installation check for Genoa video adapters is the signature
77h XXh 99h 66h at C000h:0037h, where XXh is
00h for Genoa 6200/6300
11h for Genoa 6400/6600
22h for Genoa 6100
33h for Genoa 5100/5200
55h for Genoa 5300/5400
for SuperEGA BIOS v2.41+, C000h:0057h contains the product level
for SuperEGA BIOS v3.0+, C000h:0070h contains the signature
"EXTMODE", indicating support for extended modes
SeeAlso: AX=0070h,AX=007Eh,AX=10E0h,AX=10F0h,AH=40h,AX=6F05h,AH=FFh"GO32"
SeeAlso: INT 33/AX=0028h,INT 5F/AH=00h,INT 62/AX=0001h
Values for video mode:
text/ text pixel pixel colors disply scrn system
grph resol box resoltn pages addr
00h = T 40x25 8x8 16gray 8 B800 CGA,PCjr
= T 40x25 8x14 16gray 8 B800 EGA
= T 40x25 8x16 16 8 B800 MCGA
= T 40x25 9x16 16 8 B800 VGA
01h = T 40x25 8x8 16 8 B800 CGA,PCjr
= T 40x25 8x14 16 8 B800 EGA
= T 40x25 8x16 16 8 B800 MCGA
= T 40x25 9x16 16 8 B800 VGA
02h = T 80x25 8x8 16gray 4 B800 CGA,PCjr
= T 80x25 8x14 16gray 4 B800 EGA
= T 80x25 8x16 16 4 B800 MCGA
= T 80x25 9x16 16 4 B800 VGA
03h = T 80x25 8x8 16 4 B800 CGA,PCjr
= T 80x25 8x14 16 4 B800 EGA
= T 80x25 8x16 16 4 B800 MCGA
= T 80x25 9x16 16 4 B800 VGA
04h = G 40x25 8x8 320x200 4 B800 CGA,PCjr,EGA,MCGA,VGA
05h = G 40x25 8x8 320x200 4gray B800 CGA,PCjr,EGA
= G 40x25 8x8 320x200 4 B800 MCGA,VGA
06h = G 80x25 8x8 640x200 2 B800 CGA,PCjr,EGA,MCGA,VGA
07h = T 80x25 9x14 mono var B000 MDA,Hercules,EGA
= T 80x25 9x16 mono B000 VGA
08h = T 132x25 8x8 16 B800 ATI EGA/VGA Wonder [1]
= T 132x25 8x8 mono B000 ATI EGA/VGA Wonder [1]
= G 20x25 8x8 160x200 16 PCjr, Tandy 1000
= G 90x43 8x8 720x352 mono B000 Hercules + MSHERC.COM
09h = G 40x25 8x8 320x200 16 PCjr
0Ah = G 80x25 8x8 640x200 4 PCjr, Tandy 1000
0Bh = reserved (used internally by EGA BIOS)
= G 640x200 16 Tandy 1000 SL/TL
0Ch = reserved (used internally by EGA BIOS)
0Dh = G 40x25 8x8 320x200 16 8 A000 EGA,VGA
0Eh = G 80x25 8x8 640x200 16 4 A000 EGA,VGA
0Fh = G 80x25 8x14 640x350 mono 2 A000 EGA,VGA
10h = G 80x25 8x14 640x350 4 2 A000 64k EGA
= G 640x350 16 A000 256k EGA,VGA
11h = G 80x30 8x16 640x480 mono A000 VGA,MCGA,ATI EGA,ATI VIP
12h = G 80x30 8x16 640x480 16/256k A000 VGA,ATI VIP
= G 80x30 8x16 640x480 16/64 A000 ATI EGA Wonder
= G 640x480 16 UltraVision+256K EGA
13h = G 40x25 8x8 320x200 256/256k A000 VGA,MCGA,ATI VIP
14h = T 132x25 Nx16 16 XGA, IBM Enhanced VGA [2]
= G 80x25 8x8 640x200 Lava Chrome II EGA
= G 640x400 16 Tecmar VGA/AD
15h = G 80x25 8x14 640x350 Lava Chrome II EGA
16h = G 80x25 8x14 640x350 Lava Chrome II EGA
= G 800x600 16 Tecmar VGA/AD
17h = T 132x25 Tecmar VGA/AD
= G 80x34 8x14 640x480 Lava Chrome II EGA
18h = T 132x25 mono B000 Cirrus 5320 chipset
= T 132x44 8x8 mono Tseng Labs EVA
= T 132x44 8x8 16/256 2 B000 Tseng ET4000 chipset
= G 80x34 8x14 640x480 Lava Chrome II EGA
= G 1024x768 16 Tecmar VGA/AD
19h = T 132x25 8x14 mono Tseng Labs EVA
= T 132x25 8x14 16/256 4 B000 Tseng ET4000 chipset
= T 132x34 mono B000 Cirrus 5320 chipset
1Ah = T 132x28 8x13 mono Tseng Labs EVA
= T 132x28 8x13 16/256 4 B000 Tseng ET4000 chipset
= T 132x44 mono B000 Cirrus 5320 chipset
= G 640x350 256 Tecmar VGA/AD
1Bh = G 640x400 256 Tecmar VGA/AD
1Ch = T 132x25 Cirrus 5320 chipset
= G 640x480 256 Tecmar VGA/AD
1Dh = T 132x43 Cirrus 5320 chipset
= G 800x600 256 Tecmar VGA/AD
1Eh = T 132x44 Cirrus 5320 chipset
1Fh = G 800x600 16 Realtek RTVGA
20h = G 240x128 B000 HP 95LX
21h = T 132x60 16 2 B800 Tseng ET4000 chipset
= T 132x44 9x9 1188x396 16/256k B800 WD90C
= G 80x43 8x8 720x348 mono B000 DESQview 2.x+Hercules [3]
= G 1024x768 16 Realtek RTVGA
22h = T 132x44 8x8 Tseng Labs EVA
= T 132x44 8x8 16/256 2 B800 Tseng ET4000 chipset
= T 132x44 8x8 Ahead Systems EGA2001
= T 132x44 8x8 16 2 B800 Ahead B
= T 132x44 16 Orchid Prodesigner VGA
= T 132x43 Allstar Peacock (VGA)
= G 80x43 8x8 720x348 mono B800 DESQview 2.x+Hercules [3]
23h = T 132x25 6x14 Tseng Labs EVA
= T 132x25 8x14 16/256 4 B800 Tseng ET4000 chipset
= T 132x25 8x14 Ahead Systems EGA2001
= T 132x25 8x14 16 4 B800 Ahead B
= T 132x25 8x8 16 B800 ATI EGA Wonder,ATI VIP
= T 132x25 Cirrus 5320 chipset
= T 132x28 Allstar Peacock (VGA)
= T 132x28 16 Orchid Prodesigner VGA
24h = T 132x25 Allstar Peacock (VGA)
= T 132x25 16 Orchid Prodesigner VGA
= T 132x28 6x13 Tseng Labs EVA
= T 132x28 8x13 16/256 4 B800 Tseng ET4000 chipset
= T 132x28 8x12 16 1 B800 Ahead B
= T 132x28 Cirrus 5320 chipset
25h = G 80x60 8x8 640x480 Tseng Labs EVA
= G 80x60 8x8 640x480 16/256 1 A000 Tseng ET4000 chipset
= G 640x480 16 VEGA VGA
= G 80x60 8x8 640x480 16 A000 Orchid Prodesigner VGA
= G 80x60 8x8 640x480 16 1 A000 Ahead B (same as 26h)
= G 640x480 16 NEC GB-1
= G 640x480 16 Cirrus 5320 chipset
= G 640x400 256 Realtek RTVGA
26h = T 80x60 8x8 Tseng Labs EVA
= T 80x60 8x8 16/256 2 B800 Tseng ET4000 chipset
= T 80x60 Allstar Peacock (VGA)
= T 80x60 16 Orchid ProDesigner VGA
= G 80x60 8x8 640x480 Ahead Systems EGA2001
= G 80x60 8x8 640x480 16 1 A000 Ahead B (same as 25h)
= G 640x480 256 Realtek RTVGA
27h = T 132x25 8x8 mono B000 ATI EGA Wonder,ATI VIP
= G 720x512 16 VEGA VGA
= G 720x512 16 Genoa
= G 800x600 256 Realtek RTVGA
28h = T ???x??? VEGA VGA
= G 1024x768 256 Realtek RTVGA (1meg)
29h = G 800x600 16 VEGA VGA
= G 100x37 8x16 800x600 16 A000 Orchid
= G 800x600 16 A000 STB,Genoa,Sigma
= G 800x600 16 Allstar Peacock (VGA)
= G 100x37 8x16 800x600 16/256 1 A000 Tseng ET3000/4000 chipset
= G 800x600 ??? EIZO MDB10
= G 800x600 16 Cirrus 5320 chipset
2Ah = T 100x40 Allstar Peacock (VGA)
= T 100x40 8x16 16 Orchid Prodesigner VGA
= T 100x40 8x15 16/256 4 B800 Tseng ET4000 chipset
= G 1280x1024 256 Realtek RTVGA
2Dh = G 640x350 256 VEGA VGA
= G 640x350 256/256k A000 Orchid, Genoa, STB
= G 80x25 8x14 640x350 256/256k 1 A000 Tseng ET3000/4000 chipset
= G 640x350 256 Cirrus 5320 chipset
2Eh = G 640x480 256 VEGA VGA
= G 80x30 8x16 640x480 256/256k A000 Orchid
= G 640x480 256/256k A000 STB,Genoa,Sigma
= G 80x30 8x16 640x480 256/256k 1 A000 Tseng ET3000/4000 chipset
2Fh = T 160x50 8x8 1280x400 16 4 B800 Ahead B (Wizard/3270)
= G 720x512 256 VEGA VGA
= G 720x512 256 Genoa
= G 80x25 8x16 640x400 256/256k 1 A000 Tseng ET4000 chipset
30h = G 800x600 256 VEGA VGA
= G 100x37 8x16 800x600 256/256k A000 Orchid
= G 800x600 256/256k A000 STB,Genoa,Sigma
= G 720x350 2 3270 PC
= G 800x600 256 Cardinal
= G ???x??? B800 AT&T 6300
= G 100x37 8x16 800x600 256/256k 1 A000 Tseng ET3000/4000 chipset
32h = T 80x34 8x10 16 4 B800 Ahead B (Wizard/3270)
33h = T 132x44 8x8 16 B800 ATI EGA Wonder,ATI VIP
= T 80x34 8x8 16 4 B800 Ahead B (Wizard/3270)
34h = T 80x66 8x8 16 4 B800 Ahead B (Wizard/3270)
36h = G 960x720 16 VEGA VGA
= G 960x720 16 STB
= G 960x720 16 Tseng ET3000 only
37h = T 132x44 8x8 mono B800 ATI EGA Wonder,ATI VIP
= G 1024x768 16 VEGA VGA
= G 128x48 8x16 1024x768 16 A000 Orchid
= G 1024x768 16 A000 STB,Genoa,Sigma
= G 1024x768 16 Definicon
= G 128x48 8x16 1024x768 16 1 A000 Tseng ET3000/4000
38h = G 1024x768 256 STB VGA/EM-16 Plus (1MB)
= G 128x48 8x16 1024x768 256/256k 1 A000 Tseng ET4000 chipset
= G 1024x768 256 Orchid ProDesigner II
3Dh = G 1280x1024 16 Definicon
= G 128x64 8x16 1280x1024 16 1 A000 Tseng ET4000 v3.00 [6,8]
3Eh = G 1280x961 16 Definicon
40h = T 80x43 VEGA VGA, Tecmar VGA/AD
= T 80x43 Video7 V-RAM VGA
= T 80x43 Tatung VGA
= T 100x30 16 MORSE VGA
= T 100x30 Cirrus 510/520 chipset
= T 80x25 720x350 mono Genoa SuperEGA BIOS 3.0+
= G 80x25 8x16 640x400 2 1 B800 AT&T 6300, AT&T VDC600
= G 80x25 8x16 640x400 2 1 B800 Compaq Portable
41h = T 132x25 VEGA VGA
= T 132x25 Tatung VGA
= T 132x25 Video7 V-RAM VGA
= T 100x50 16 MORSE VGA
= T 100x50 Cirrus 510/520 chipset
= T 80x34 9x14 720x476 16/256k B800 WD90C
= G 640x200 16 1 AT&T 6300
= G 80x25 720x348 mono B000 Genoa SuperEGA BIOS 3.0+
42h = T 132x43 VEGA VGA
= T 132x43 Tatung VGA
= T 132x43 Video7 V-RAM VGA
= T 80x34 9x10 4 4 B800 Ahead B (Wizard/3270)
= T 100x60 16 MORSE VGA
= T 100x60 Cirrus 510/520 chipset
= G 80x25 8x16 640x400 16 AT&T 6300, AT&T VDC600
= G 80x25 720x348 mono B800 Genoa SuperEGA BIOS 3.0+
43h = T 80x60 VEGA VGA
= T 80x60 Tatung VGA
= T 80x60 Video7 V-RAM VGA
= T 80x45 9x8 4 4 B800 Ahead B (Wizard/3270)
= T 100x75 16 MORSE VGA
= T 80x29 720x348 mono Genoa SuperEGA BIOS 3.0+
= G 640x200 of 640x400 viewport AT&T 6300 (unsupported)
44h = disable VDC and DEB output AT&T 6300
= T 100x60 VEGA VGA
= T 100x60 Tatung VGA
= T 100x60 Video7 V-RAM VGA
= T 80x32 720x352 mono Genoa SuperEGA BIOS 3.0+
45h = T 132x28 Tatung VGA
= T 132x28 Video7 V-RAM VGA
= T 80x44 720x352 mono Genoa SuperEGA BIOS 3.0+
46h = T 132x25 8x14 mono Genoa 6400
= T 132x25 9x14 mono Genoa SuperEGA BIOS 3.0+
= G 100x40 8x15 800x600 2 AT&T VDC600
47h = T 132x29 8x12 mono Genoa 6400
= T 132x29 9x12 mono Genoa SuperEGA BIOS 3.0+
= T 132x28 9x16 1188x448 16/256k B800 WD90C
= G 100x37 8x16 800x600 16 AT&T VDC600
48h = T 132x32 8x12 mono Genoa 6400
= T 132x32 9x11 mono Genoa SuperEGA BIOS 3.0+
= G 80x50 8x8 640x400 2 B800 AT&T 6300, AT&T VDC600
49h = T 132x44 8x8 mono Genoa 6400
= T 132x44 9x8 mono Genoa SuperEGA BIOS 3.0+
= G 80x30 8x16 640x480 Lava Chrome II EGA
4Dh = T 120x25 VEGA VGA
4Eh = T 120x43 VEGA VGA
= T 80x60 8x8 16/256k B800 Oak OTI-067/OTI-077 [7]
4Fh = T 132x25 VEGA VGA
= T 132x60 some Oak Tech VGA [7]
50h = T 80x30 8x16 16/256k B800 Trident TVGA 8800/8900
= T 80x34 Lava Chrome II EGA
= T 80x43 mono VEGA VGA
= T 132x25 9x14 mono Ahead Systems EGA2001
= T 132x25 9x14 4 4 B800 Ahead B
= T 132x25 8x14 16 8 B800 OAK Technologies VGA-16
= T 132x25 8x14 16/256k B800 Oak OTI-037/067/077 [7]
= T 132x30 16 MORSE VGA
= T 132x30 Cirrus 510/520 chipset
= G 80x30 8x16 640x480 16 Paradise EGA-480
= G 80x30 8x16 640x480 16 NEL Electronics BIOS
= G 640x480 mono??? Taxan 565 EGA
= G 40x25 8x8 320x200 Genoa SuperEGA BIOS 3.0+
51h = T 80x30 8x16 Paradise EGA-480
= T 80x30 9x16 NEL Electronics BIOS
= T 80x30 Lava Chrome II EGA
= T 80x43 8x11 16/256k B800 Trident TVGA 8800/8900
= T 132x25 mono VEGA VGA
= T 132x43 8x8 16 5 B800 OAK Technologies VGA-16
= T 132x43 8x8 16/256k B800 Oak OTI-037/067/077
= T 132x28 9x12 4 4 B800 Ahead B
= T 132x50 16 MORSE VGA
= T 132x50 Cirrus 510/520 chipset
= G 80x34 8x14 640x480 16 ATI EGA Wonder
= G 80x25 8x8 640x200 Genoa SuperEGA BIOS 3.0+
52h = T 80x60 Lava Chrome II EGA
= T 80x60 8x8 16/256k B800 Trident TVGA 8800/8900
= T 132x43 mono VEGA VGA
= T 132x44 9x8 mono Ahead Systems EGA2001
= T 132x44 9x8 4 2 B800 Ahead B
= T 132x60 16 MORSE VGA
= T 132x60 Cirrus 510/520 chipset
= G 94x29 8x14 752x410 16 ATI EGA Wonder
= G 100x75 8x8 800x600 16 1 A000 OAK Technologies VGA-16
= G 100x75 8x8 800x600 16 A000 Oak OTI-037 chipset [7]
= G 100x37 8x16 800x600 16 A000 Oak OTI-067/077 chips [7]
= G 128x30 8x16 1024x480 16 NEL Electronics BIOS
53h = T 80x25 8x16 NEL Electronics BIOS
= T 80x60 16 MORSE VGA
= T 80x60 Cirrus 510/520 chipset
= T 132x25 8x14 16/256k B800 Trident TVGA 8800/8900
= T 132x43 Lava Chrome II EGA
= G 640x480 256 Oak VGA
= G 80x30 8x16 640x480 256 A000 Oak OTI-067/OTI-077 [7]
= G 100x40 8x14 800x560 16 ATI EGA Wonder,ATI VIP
= G AX PC
54h = T 132x25 Lava Chrome II EGA
= T 132x30 8x16 16/256k B800 Trident TVGA 8800/8900
= T 132x43 8x8 Paradise EGA-480
= T 132x43 8x8 NEL Electronics BIOS
= T 132x43 7x9 16/256k B800 Paradise VGA
= T 132x43 8x9 16/256k B800 Paradise VGA on multisync
= T 132x43 Taxan 565 EGA
= T 132x43 AST VGA Plus
= T 132x43 Hewlett-Packard D1180A
= T 132x43 7x9 16 AT&T VDC600
= T 132x50 8x8 16 A000 NCR 77C22 [9]
= T 132x43 9x9 1188x387 16/256k B800 WD90C
= G 100x42 8x14 800x600 16 A000 ATI EGA Wonder, VGA Wonder
= G 100x42 8x14 800x600 16 A000 ATI Ultra 8514A, ATI XL
= G 800x600 256 A000 Oak VGA
= G 100x37 8x16 800x600 256 A000 Oak OTI-067/077 chips [7]
55h = T 80x66 8x8 16/256k A000 ATI VIP
= T 132x25 8x14 Paradise EGA-480
= T 132x25 8x14 NEL Electronics BIOS
= T 132x25 7x16 16/256k B800 Paradise VGA
= T 132x25 8x16 16/256k B800 Paradise VGA on multisync
= T 132x25 Taxan 565 EGA
= T 132x25 AST VGA Plus
= T 132x25 Hewlett-Packard D1180A
= T 132x25 7x16 16 AT&T VDC600
= T 132x25 8x16 16 A000 NCR 77C22 [9]
= T 132x43 8x11 16/256k B800 Trident TVGA 8800/8900
= T 132x25 9x16 1188x400 16/256k B800 WD90C
= G 94x29 8x14 752x410 Lava Chrome II EGA
= G 128x48 8x16 1024x768 16/256k A000 ATI VGA Wonder v4+ [4]
= G 1024x768 16/256k ATI VGA Wonder Plus
= G 1024x768 16/256k ATI Ultra 8514A,ATI XL
= G 128x48 8x16 1024x768 4 A000 Oak OTI-067/077 chips [7]
56h = T 132x43 8x8 3??? 2 B000 NSI Smart EGA+
= T 132x43 7x9 4 B000 Paradise VGA
= T 132x43 8x9 4 B000 Paradise VGA on multisync
= T 132x43 mono Taxan 565 EGA
= T 132x43 7x9 2 AT&T VDC600
= T 132x43 9x8 NEL Electronics BIOS
= T 132x50 8x8 4 A000 NCR 77C22 [9]
= T 132x60 8x8 16/256k B800 Trident TVGA 8800/8900
= G 1024x768 16 A000 Oak VGA
= G 128x48 8x16 1024x768 16 A000 Oak OTI-067/077 chips [7]
57h = T 132x25 8x14 3??? 4 B000 NSI Smart EGA+
= T 132x25 7x16 4 B000 Paradise VGA
= T 132x25 8x16 4 B000 Paradise VGA on multisync
= T 132x25 9x14 NEL Electronics BIOS
= T 132x25 mono Taxan 565 EGA
= T 132x25 7x16 2 AT&T VDC600
= T 132x25 9x14 16/256k B800 Trident TVGA 8800/8900
= T 132x25 8x16 4 A000 NCR 77C22 [9]
= G 96x48 8x16 768x1024 16 A000 Oak OTI-067/077 chips [7]
58h = T 80x33 8x14 16 B800 ATI EGA Wonder,ATI VIP
= T 80x32 9x16 16 Genoa 6400
= T 80x43 8x8 NEL Electronics BIOS
= T 132x30 9x16 16/256k B800 Trident TVGA 8800/8900
= G 100x75 8x8 800x600 16/256k A000 Paradise VGA
= G 100x75 8x8 800x600 16 AT&T VDC600
= G 800x600 16 AST VGA Plus, Compaq VGA
= G 800x600 16 Dell VGA
= G 800x600 16 Hewlett-Packard D1180A
= G 800x600 ??? ELT VGA PLUS 16
= G 100x75 8x8 800x600 16 A000 NCR 77C22 [9]
= G 160x64 8x16 1280x1024 16 A000 Oak OTI-077 chipset [7]
= G 100x75 8x8 800x600 16/256k A000 Paradise VGA, WD90C
59h = T 80x43 9x8 NEL Electronics BIOS
= T 80x66 8x8 16/256k A000 ATI VIP
= T 132x43 9x11 16/256k B800 Trident TVGA 8800/8900
= G 100x75 8x8 800x600 2 A000 Paradise VGA
= G 100x75 8x8 800x600 2 AT&T VDC600
= G 800x600 2 AST VGA Plus, Compaq VGA
= G 800x600 2 Dell VGA
= G 800x600 2 Hewlett-Packard D1180A
= G 100x75 8x8 800x600 2 A000 NCR 77C22 [9]
= G 128x48 8x16 1024x768 256 A000 Oak OTI-077 chipset [7]
5Ah = T 80x60 8x8 NEL Electronics BIOS
= T 132x60 9x8 16/256k B800 Trident TVGA 8800/8900
= G 128x48 8x16 1024x768 2 A000 NCR 77C22 [9]
5Bh = T 80x30 8x16 B800 ATI VGA Wonder (undoc)
= G 640x350 256 Genoa 6400
= G 80x25 8x16 640x400 32K A000 Oak OTI-067/077 chips [7]
= G 800x600 16 Maxxon, SEFCO TVGA, Imtec
= G 100x75 8x8 800x600 16/256k A000 Trident TVGA 8800, 8900
= G 800x600 ??? Vobis MVGA
= G 100x37 8x16 800x600 NEL Electronics BIOS
= G 128x48 8x16 1024x768 16 A000 NCR 77C22 [8,9]
5Ch = T 100x37 8x16 NEL Electronics BIOS
= G 640x400 256 Logix, ATI Prism Elite
= G 640x400 256 Maxxon, SEFCO TVGA, Imtec
= G 80x25 8x16 640x400 256/256k A000 Zymos Poach, Hi Res 512
= G 80x25 8x16 640x400 256/256k A000 Trident TVGA 8800/8900
= G 80x30 8x16 640x480 256 Genoa 6400
= G 80x30 8x16 640x480 32K A000 Oak OTI-077 chipset [7]
= G 100x75 8x8 800x600 256 A000 NCR 77C22 [9]
= G 100x75 8x8 800x600 256/256k A000 WD90C
5Dh = T 100x75 8x8 NEL Electronics BIOS
= G 640x480 256 Logix, ATI Prism Elite
= G 640x480 256 Maxxon, SEFCO TVGA, Imtec
= G 80x30 8x16 640x480 256/256k A000 Zymos Poach, Hi Res 512
= G 80x30 8x16 640x480 256/256k A000 Trident TVGA 8800 (512K)
= G 128x48 8x16 1024x768 16 A000 NCR 77C22 [9]
= G 128x48 8x16 1024x768 16/256k A000 WD90C
5Eh = G 640x400 256 Paradise VGA,VEGA VGA
= G 640x400 256 AST VGA Plus, NCR 77C22
= G 640x400 256 Compaq VGA, Dell VGA
= G 80x25 8x16 640x400 256 AT&T VDC600
= G 80x25 8x16 640x400 256 A000 NCR 77C22 [9]
= G 800x600 16 Logix, ATI Prism Elite
= G 100x37 8x16 800x600 16 NEL Electronics BIOS
= G 100x75 8x8 800x600 256 Genoa 6400
= G 100x75 8x8 800x600 256/256k A000 Zymos Poach, Trident 8900
= G 100x75 8x8 800x600 256/256k A000 Hi Res 512
= G 80x25 8x16 640x400 256/256k A000 WD90C
5Fh = G 640x480 256 Paradise VGA
= G 640x480 256 AST VGA Plus, NCR 77C22
= G 640x480 256 Compaq VGA, Dell VGA
= G 640x480 256 Hewlett-Packard D1180A
= G 80x30 8x16 640x480 256 AT&T VDC600 (512K)
= G 80x30 8x16 640x480 256 A000 NCR 77C22 [9]
= G 1024x768 16 Logix, ATI Prism Elite
= G 1024x768 16 Maxxon, Imtec
= G 128x48 8x16 1024x768 16 Genoa 6400
= G 128x48 8x16 1024x768 16/256k A000 Zymos Poach, Hi Res 512
= G 128x48 8x16 1024x768 16/256k A000 Trident TVGA 88/8900 512K
= G 80x30 8x16 640x480 256/256k A000 WD90C
60h = T 132x25 8x14 16/64 8 B800 Quadram Ultra VGA
= T 132x25 8x14 16 Genoa 6400
= T 132x25 8x14 16 Genoa SuperEGA BIOS 3.0+
= T 132x25 Cirrus 5320 chipset
= G 80x??? ???x400 Corona/Cordata BIOS 4.10+
= G 80x25 8x16 640x400 256 1 A000 Ahead A, Ahead B
= G 752x410 VEGA VGA
= G 752x410 16 Tatung VGA
= G 752x410 16 Video7 V-RAM VGA
= G 128x48 8x16 1024x768 4/256k A000 Trident TVGA 8900
= G 128x48 8x16 1024x768 256/256k A000 WD90C
61h = T 132x29 8x12 16/64 8 B800 Quadram Ultra VGA
= T 132x29 8x8 16 Genoa 6400
= T 132x29 8x8 16 Genoa SuperEGA BIOS 3.0+
= T 132x50 Cirrus 5320 chipset
= G ???x400 Corona/Cordata BIOS 4.10+
= G 80x25 8x16 640x400 256 A000 ATI VGA Wonder,VGA Wonder+
= G 80x25 8x16 640x400 256 A000 ATI Ultra 8514A,ATI XL
= G 80x30 8x16 640x480 256 1 A000 Ahead A, Ahead B (512K)
= G 720x540 VEGA VGA
= G 720x540 16 Tatung VGA
= G 720x540 16 Video7 V-RAM VGA
= G 96x64 8x16 768x1024 16/256k A000 Trident TVGA 88/8900 512K
= G 128x48 8x16 1024x768 256 A000 NCR 77C22 [8,9]
62h = T 132x32 8x11 16/64 6 B800 Quadram Ultra VGA
= T 132x32 8x12 16 Genoa 6400
= T 132x32 8x11 16 Genoa SuperEGA BIOS 3.0+
= G 640x450 16 Cirrus 510/520 chipset
= G 80x30 8x16 640x480 256 A000 ATI VGA Wonder,VGA Wonder+
= G 80x30 8x16 640x480 256 A000 ATI Ultra 8514A,ATI XL
= G 800x600 VEGA VGA
= G 800x600 16 Tatung VGA
= G 800x600 16 Video7 V-RAM VGA
= G 100x75 8x8 800x600 256 1 A000 Ahead A, Ahead B (512K)
= G 128x48 8x16 1024x768 256/256k A000 Trident TVGA 8900, Zymos
= G 128x48 8x16 1024x768 256 A000 NCR 77C22 [9]
= G 640x480 32K A000 WD90C
63h = T 132x44 8x8 16/64 5 B800 Quadram Ultra VGA
= T 132x44 8x8 16 Genoa 6400
= T 132x44 8x8 16 Genoa SuperEGA BIOS 3.0+
= G 720x540 16 MORSE VGA
= G 720x540 16 Cirrus 510/520 chipset
= G 100x42 8x14 800x600 256 A000 ATI VGA Wonder,VGA Wonder+
= G 100x42 8x14 800x600 256 A000 ATI Ultra 8514A,ATI XL
= G 128x48 7x16 1024x768 256 1 A000 Ahead B (1MB)
= G 1024x768 2 Video7 V-RAM VGA
= G 800x600 32K A000 WD90C
64h = T 132x60 8x8 16 Genoa 6400
= G 800x600 16 MORSE VGA
= G 800x600 16 Cirrus 510/520 chipset
= G 800x600 ??? SAMPO-Mira VGA
= G 1024x768 4 Video7 V-RAM VGA
= G 128x48 8x16 1024x768 256 A000 ATI VGA Wonder Plus,ATI XL
= G 160x64 8x16 1280x1024 16/256k A000 WD90C [8]
65h = G 1024x768 16 Video7 V-RAM VGA
= G 128x48 8x16 1024x768 16 A000 ATI VGA Wonder
66h = G 640x400 256 Tatung VGA
= G 640x400 256 Video7 V-RAM VGA
= T 80x50 8x8 640x400 16/256k B800 WD90C
67h = G 640x480 256 Video7 V-RAM VGA
= G 128x48 8x16 1024x768 4 A000 ATI VGA Wonder
= G 160x64 8x16 1280x1024 16 A000 NCR 77C22 [8,9]
= T 80x43 8x8 640x344 16/256k B800 WD90C
69h = G 720x540 256 Video7 V-RAM VGA
= T 132x50 8x8 1056x400 16/256k B800 WD90C
6Ah = G 800x600 16 A000 VESA standard interface
= G 100x75 8x8 800x600 16 Genoa 6400
= G 800x600 16 A000 Ahead A
= G 100x75 8x8 800x600 16 1 A000 Ahead B (VESA) (see 71h)
= G 800x600 16 Zymos Poach, Hi Res 512
= G 800x600 16 Epson LT-386SX in CRT Mode
= G 800x600 16 Compuadd 316SL in CRT Mode
= G 100x42 8x14 800x600 A000 ATI VGA Wonder (undoc)
= G 160x64 8x16 1280x1024 256 A000 NCR 77C22 [8,9]
6Bh = T 100x37 8x16 16 Genoa 6400
= T 100x37 8x16 NEL Electronics BIOS
6Ch = G 100x75 8x8 800x600 256 Genoa 6400
= G 160x60 8x16 1280x960 16/256k A000 WD90C [8]
70h = extended mode set (see AX=0070h) Everex Micro Enhancer EGA
= T 40x25 8x8 16 8 B800 Quadram (CGA double scan)
= T 40x25 8x8 (CGA dblscan) Genoa SuperEGA BIOS 3.0+
= G 360x480 256 Cirrus 510/520/5320 chips
= G 90x28 8x14 720x392 16 1 A000 Ahead B
= G 800x600 16 C&T chipset, Cardinal
71h = T 80x25 8x8 16 8 B800 Quadram (CGA double scan)
= T 80x25 8x8 (CGA dblscan) Genoa SuperEGA BIOS 3.0+
= G 528x400 256 Cirrus 510/520 chipset
= G 100x35 8x16 800x600 16of64 A000 NSI Smart EGA+
= G 100x75 8x8 800x600 16 1 A000 Ahead B (same as 6Ah)
= G 960x720 16 C&T chipset, Cardinal
72h = T 80x60 8x8 16 B800 Quadram Ultra VGA
= T 80x60 8x8 16 B800 Genoa 6400
= T 80x60 8x8 16 B800 Genoa SuperEGA BIOS 3.0+
= G 528x480 256 Cirrus 510/520 chipset
= G 640x480 32768 A000 ATI
= G 1024x768 16 C&T chipset, Cardinal
= G 640x480 16M A000 WD90C
73h = G 80x60 8x8 640x480 16 A000 Quadram Ultra VGA
= G 80x60 8x8 640x480 16 Genoa 6400
= G 80x60 8x8 640x480 16 Genoa SuperEGA BIOS 3.0+
74h = T 80x66 8x8 16 B800 Quadram Ultra VGA
= T 80x66 8x8 16 B800 Genoa 6400
= T 80x66 8x8 16 B800 Genoa SuperEGA BIOS 3.0+
= G 640x400 2 B800 Toshiba 3100 AT&T mode
= G 128x48 8x16 1024x768 16 1 A000 Ahead A, Ahead B (512K)
75h = G 128x48 8x16 1024x768 4 1 A000 Ahead B
= G 80x66 640x528 16??? A000 Quadram Ultra VGA
= G 80x66 640x528 16 Genoa SuperEGA BIOS 3.0+
76h = T 94x29 8x14 16 B800 Quadram Ultra VGA
= T 94x29 8x14 Genoa SuperEGA BIOS 3.0+
= G 128x48 8x16 1024x768 2 1 A000 Ahead B
77h = G 94x29 752x410 16??? A000 Quadram Ultra VGA
= G 94x29 752x410 16 Genoa SuperEGA BIOS 3.0+
78h = T 100x37 8x16 16 Genoa 6400
= T 100x75 8x8 16 B800 Quadram Ultra VGA
= T 100x75 8x8 Genoa SuperEGA BIOS 3.0+
= G 640x400 256 STB VGA/EM-16 Plus
= G 640x400 256 Cardinal, C&T chipset
= G 640x400 256 Cirrus 5320 chipset
79h = G 640x480 256 Cardinal, C&T chipset
= G 100x75 800x600 16??? A000 Quadram Ultra VGA
= G 100x75 8x8 800x600 16 Genoa SuperEGA BIOS 3.0+
= G 100x75 8x8 800x600 16 Genoa 6400
7Ah = T 114x60 8x8 16 B800 Quadram Ultra VGA
= T 114x60 8x8 Genoa SuperEGA BIOS 3.0+
= G 720x540 256 C&T chipset, Cardinal
7Bh = G 800x600 256 C&T chipset, Cardinal
= G 114x60 912x480 16??? A000 Quadram Ultra VGA
= G 912x480 16 Genoa SuperEGA BIOS 3.0+
7Ch = G 512x512 16 Genoa
7Dh = G 64x32 8x16 512x512 256 Genoa
7Eh = special mode set (see AX=007Eh) Paradise VGA, AT&T VDC600
= G 80x25 8x16 640x400 256 Genoa 6400
7Fh = special function set (see AX=007Fh) Paradise VGA, AT&T VDC600
= G 128x48 8x16 1024x768 4 Genoa 6400
82h = T 80x25 B&W AT&T VDC overlay mode [5]
83h = T 80x25 AT&T VDC overlay mode [5]
86h = G 640x200 B&W AT&T VDC overlay mode [5]
88h = G 90x43 8x8 720x352 mono B000 Hercules + MSHERC.COM
C0h = G 640x400 2/prog pallet AT&T VDC overlay mode [5]
C4h = disable output AT&T VDC overlay mode [5]
D0h = G 640x400 2 B800 DEC VAXmate AT&T mode
Notes:
[1] for ATI EGA Wonder, mode 08h is only valid if SMS.COM is loaded resident.
SMS maps mode 08h to mode 27h if the byte at location 0040:0063 is 0B4h,
otherwise to mode 23h, thus selecting the appropriate (monochrome or
color) 132x25 character mode.
for ATI VGA Wonder, mode 08h is the same, and only valid if VCONFIG loaded
resident
[2] early XGA boards support 132-column text but do not have this BIOS mode
[3] DESQview intercepts calls to change into these two modes (21h is page 0,
22h is page 1) even if there is no Hercules graphics board installed
[4] ATI BIOS v4-1.00 has a text-scrolling bug in this mode
[5] for AT&T VDC overlay modes, BL contains the DEB mode, which may be 06h,
40h, or 44h
[6] BIOS text support is broken in this undocumented mode; scrolling moves only
about 1/3 of the screen (and does even that portion incorrectly), while
screen clears only clear about 3/4.
[7] The Oak OTI-037/067/077 modes are present in the Oak VGA BIOS, which OEMs
may choose to use only partially or not at all; thus, not all Oak boards
support all "Oak" modes listed here
[8] interlaced only
[9] this card uses the full 128K A000h-BFFFh range for the video buffer,
precluding the use of a monochrome adapter in the same system
----------100070-----------------------------
INT 10 - VIDEO - Everex Micro Enhancer EGA/Viewpoint VGA - EXTENDED MODE SET
AX = 0070h
BL = mode (see below)
SeeAlso: AH=00h,AX=6F05h,AX=7000h/BX=0004h,AH=FFh"GO32"
Values for video mode:
text/ text pixel pixel colors disp scrn monitor adapter
grph resol box resoltn page addr
00h = G 640x480 16 multsync EGA,VGA
01h = G 752x410 16 multsync EGA,VGA
02h = G 800x600 16 multsync EGA,VGA
03h = T 80x34 multsync EGA,VGA
04h = T 80x60 multsync EGA,VGA
05h = T 94x29 multsync EGA only
06h = T 94x51 multsync EGA only
07h = T 100x43 8x14 16 VGA only
08h = T 100x75 8x8 16 VGA only
09h = T 80x44 EGA EGA only
0Ah = T 132x25 EGA EGA,VGA
0Bh = T 132x44 EGA EGA,VGA
0Ch = T 132x25 CGA EGA only
0Dh = T 80x44 mono EGA only
0Eh = T 132x25 mono
0Fh = T 132x44 mono
10h = reserved
11h = G 1280x350 4 EGA only
12h = G 1280x600 4 EGA only
13h = G 640x350 256 EGA,EV673
14h = G 640x400 256
15h = G 512x480 256
16h = T 80x30 8x16 256 VGA only
18h = T 100x27 8x16 16 VGA only
20h = G 1024x768 16 Everex 629,678
Everex EV-673
21h = T 160x64 8x16 1280x1024 16 1MB VGA only
30h = G 640x480 256 Everex 629,678
Everex EV-673
31h = G 800x600 256 Everex 629,678
Everex EV-673
32h = G 128x48 8x16 1024x768 256 1MB VGA only
40h = T 132x30 8x16 16 VGA only
50h = T 132x32 8x16 mono VGA only
62h = G 40x25 8x8 320x200 32K Vwpt TC (EV629)
70h = G 64x30 8x16 512x480 32K Viewpoint TC
71h = G 80x30 8x16 640x480 32K Viewpoint TC
76h = G 64x30 8x16 512x480 16M Viewpoint TC
77h = G 80x30 8x16 640x480 16M Viewpoint TC
----------10007E-----------------------------
INT 10 - VIDEO - Paradise VGA, AT&T VDC600 - SET SPECIAL MODE
AX = 007Eh
BX = horizontal dimension of the mode desired
CX = vertical dimension of the mode desired
(both BX/CX in pixels for graphics modes, rows for alpha modes)
DX = number of colors of the mode desired (0000h for monochrome modes)
Return: BH = 7Eh if successful (Paradise VGA)
AL = 7Eh if successful (AT&T VDC600)
SeeAlso: AH=00h,AX=0070h,AX=007Fh,AX=6F05h,AH=FFh"GO32"
----------10007F-----------------------------
INT 10 - VIDEO - Paradise VGA, AT&T VDC600 - EXTENDED FUNCTIONS
AX = 007Fh
BH = function
00h set VGA operation
01h set non-VGA operation
color modes (0,1,2,3,4,5,6) will set non-VGA CGA operation
monochrome mode 7 will set non-VGA MDA/Hercules operation
02h query mode status
Return: BL = 00h if operating in VGA mode, 01h if non-VGA mode
CH = total video RAM size in 64k byte units
CL = video RAM used by the current mode
03h lock current mode
allows current mode (VGA or non-VGA) to survive re-boot
04h enter CGA mode (AT&T VDC600 only)
05h enter MDA mode (AT&T VDC600 only)
0Ah,0Bh,0Ch,0Dh,0Eh,0Fh WRITE PARADISE REGISTERS 0,1,2,3,4,5
(port 03CEh indices 0Ah,0Bh,0Ch,0Dh,0Eh,0Fh)
BL = value to set in the paradise register
1Ah,1Bh,1Ch,1Dh,1Eh,1Fh READ PARADISE REGISTERS 0,1,2,3,4,5
(port 03CEh indices 0Ah,0Bh,0Ch,0Dh,0Eh,0Fh)
Return: BL = value of the paradise register
BH = 7Fh if successful
Return: AL = 7Fh if successful (AT&T VDC600)
SeeAlso: AX=007Eh
----------1001-------------------------------
INT 10 - VIDEO - SET TEXT-MODE CURSOR SHAPE
AH = 01h
CH = bit 7 should be zero
bits 6,5 cursor blink
(00=normal, 01=invisible, 10=erratic, 11=slow)
(00=normal, other=invisible on EGA/VGA)
bits 4-0 top scan line containing cursor
CL = bottom scan line containing cursor (bits 0-4)
Notes: buggy on EGA systems--BIOS remaps cursor shape in 43 line modes, but
returns unmapped cursor shape
UltraVision scales size to the current font height by assuming 14-line
monochrome and 8-line color fonts; this call is not valid if cursor
emulation has been disabled
applications which wish to change the cursor by programming the
hardware directly on EGA or above should call INT 10/AX=1130h or
read 0040h:0085h first to determine the current font height
BUG: AMI 386 BIOS and AST Premier 386 BIOS will lock up the system if AL
is not equal to the current video mode
SeeAlso: AH=03h,AX=CD05h
----------1002-------------------------------
INT 10 - VIDEO - SET CURSOR POSITION
AH = 02h
BH = page number
0-3 in modes 2&3
0-7 in modes 0&1
0 in graphics modes
DH = row (00h is top)
DL = column (00h is left)
SeeAlso: AH=03h,AH=05h,INT 60/DI=030Bh
----------1003-------------------------------
INT 10 - VIDEO - GET CURSOR POSITION AND SIZE
AH = 03h
BH = page number
0-3 in modes 2&3
0-7 in modes 0&1
0 in graphics modes
Return: AX = 0000h (Phoenix BIOS)
CH = start scan line
CL = end scan line
DH = row (00h is top)
DL = column (00h is left)
Notes: a separate cursor is maintained for each of up to 8 display pages
many ROM BIOSes incorrectly return the default size for a color display
(start 06h, end 07h) when a monochrome display is attached
SeeAlso: AH=01h,AH=02h
----------1004-------------------------------
INT 10 - VIDEO - READ LIGHT PEN POSITION (except VGA)
AH = 04h
Return: AH = light pen trigger flag
00h not down/triggered
01h down/triggered
DH,DL = row,column of character light pen is on
CH = pixel row (graphics modes 04h-06h)
CX = pixel row (graphics modes with >200 rows)
BX = pixel column
Notes: on a CGA, returned column numbers are always multiples of 2 (320-
column modes) or 4 (640-column modes)
returned row numbers are only accurate to two lines
----------1005-------------------------------
INT 10 - VIDEO - SELECT ACTIVE DISPLAY PAGE
AH = 05h
AL = new page number (00h to number of pages - 1) (see AH=00h)
Note: to determine whether the requested page actually exists, use AH=0Fh
to query the current page after making this call
SeeAlso: AH=0Fh,AH=43h,AH=45h
----------1005-------------------------------
INT 10 - VIDEO - PCjr - MANIPULATE CRT/CPU PAGE REGISTERS
AH = 05h
AL = subfunction
80h read CRT and CPU page registers
Return: BH = CRT page register
BL = CPU page register
81h set CPU page register
BL = CPU page
82h set CRT page register
BH = CRT page
83h set both CPU and CRT page registers
BL = CPU page
BH = CRT page
Notes: the CPU page determines which 16K block of the first 128K of physical
memory will be mapped at B800h by the hardware
the CRT page determines the start address of the memory used by the
video controller
----------1005-------------------------------
INT 10 - VIDEO - Corona/Cordata BIOS v4.10+ - GRAPHICS BITMAP BUFFER
AH = 05h
AL =
00h set address of graphics bitmap buffer (video modes 60h,61h)
BX = segment of buffer
0Fh get address of graphics bitmap buffer (video modes 60h,61h)
Return: DX = segment of graphics bitmap buffer
----------1006-------------------------------
INT 10 - VIDEO - SCROLL UP WINDOW
AH = 06h
AL = number of lines by which to scroll up (00h = clear entire window)
BH = attribute used to write blank lines at bottom of window
CH,CL = row,column of window's upper left corner
DH,DL = row,column of window's lower right corner
Note: affects only the currently active page (see AH=05h)
Warning: some implementations have a bug which destroys BP
SeeAlso: AH=07h,AH=72h,AH=73h,AX=7F07h,INT 50/AX=0014h
----------1007-------------------------------
INT 10 - VIDEO - SCROLL DOWN WINDOW
AH = 07h
AL = number of lines by which to scroll down (00h=clear entire window)
BH = attribute used to write blank lines at top of window
CH,CL = row,column of window's upper left corner
DH,DL = row,column of window's lower right corner
Note: affects only the currently active page (see AH=05h)
Warning: some implementations have a bug which destroys BP
SeeAlso: AH=06h,AH=72h,AH=73h,INT 50/AX=0014h
----------1008-------------------------------
INT 10 - VIDEO - READ CHARACTER AND ATTRIBUTE AT CURSOR POSITION
AH = 08h
BH = page number (00h to number of pages - 1) (see AH=00h)
Return: AH = attribute
bit 7: blink
bits 6-4: background color
000 black
001 blue
010 green
011 cyan
100 red
101 magenta
110 brown
111 white
bits 3-0: foreground color
0000 black 1000 dark gray
0001 blue 1001 light blue
0010 green 1010 light green
0011 cyan 1011 light cyan
0100 red 1100 light red
0101 magenta 1101 light magenta
0110 brown 1110 yellow
0111 light gray 1111 white
AL = character
Notes: for monochrome displays, a foreground of 1 with background 0 is
underlined
the blink bit may be reprogrammed to enable intense background colors
using AX=1003h or by programming the CRT controller
the foreground intensity bit (3) can be programmed to switch between
character sets A and B on EGA and VGA cards, thus enabling 512
simultaneous characters on screen. In this case the bit's usual
function (intensity) is regularly turned off.
SeeAlso: AH=09h,AX=1003h,AX=5001h
----------1009-------------------------------
INT 10 - VIDEO - WRITE CHARACTER AND ATTRIBUTE AT CURSOR POSITION
AH = 09h
AL = character to display
BH = page number (00h to number of pages - 1) (see AH=00h)
BL = attribute (text mode) or color (graphics mode)
if bit 7 set in graphics mode, character is xor'ed onto screen
CX = number of times to write character
Notes: all characters are displayed, including CR, LF, and BS
replication count in CX may produce an unpredictable result in graphics
modes if it is greater than the number of positions remaining in the
current row
SeeAlso: AH=08h,AH=0Ah,AH=4Bh"GRAFIX",INT 17/AH=60h,INT 1F,INT 43,INT 44
----------100A-------------------------------
INT 10 - VIDEO - WRITE CHARACTER ONLY AT CURSOR POSITION
AH = 0Ah
AL = character to display
BH = page number (00h to number of pages - 1) (see AH=00h)
BL = attribute (PCjr only) or color (graphics mode)
if bit 7 set in graphics mode, character is xor'ed onto screen
CX = number of times to write character
Notes: all characters are displayed, including CR, LF, and BS
replication count in CX may produce an unpredictable result in graphics
modes if it is greater than the number of positions remaining in the
current row
SeeAlso: AH=08h,AH=09h,AH=4Bh,INT 17/AH=60h,INT 1F,INT 43,INT 44
----------100B--BH00-------------------------
INT 10 - VIDEO - SET BACKGROUND/BORDER COLOR
AH = 0Bh
BH = 00h
BL = background/border color (border only in text modes)
SeeAlso: AH=0Bh/BH=01h
----------100B--BH01-------------------------
INT 10 - VIDEO - SET PALETTE
AH = 0BH
BH = 01h
BL = palette ID
00h background, green, red, and brown/yellow
01h background, cyan, magenta, and white
SeeAlso: AH=0Bh/BH=00h
----------100C-------------------------------
INT 10 - VIDEO - WRITE GRAPHICS PIXEL
AH = 0Ch
BH = page number
AL = pixel color (if bit 7 set, value is xor'ed onto screen)
CX = column
DX = row
Notes: valid only in graphics modes
BH is ignored if the current video mode supports only one page
SeeAlso: AH=0Dh,AH=46h
----------100D-------------------------------
INT 10 - VIDEO - READ GRAPHICS PIXEL
AH = 0Dh
BH = page number
CX = column
DX = row
Return: AL = pixel color
Notes: valid only in graphics modes
BH is ignored if the current video mode supports only one page
SeeAlso: AH=0Ch,AH=47h
----------100E-------------------------------
INT 10 - VIDEO - TELETYPE OUTPUT
AH = 0Eh
AL = character to write
BH = page number
BL = foreground color (graphics modes only)
Desc: display a character on the screen, advancing the cursor and scrolling
the screen as necessary
Notes: characters 07h (BEL), 08h (BS), 0Ah (LF), and 0Dh (CR) are interpreted
and do the expected things
IBM PC ROMs dated 4/24/81 and 10/19/81 require that BH be the same as
the current active page
SeeAlso: AH=02h,AH=0Ah
----------100F-------------------------------
INT 10 - VIDEO - GET CURRENT VIDEO MODE
AH = 0Fh
Return: AH = number of character columns
AL = display mode (see AH=00h)
BH = active page (see AH=05h)
Notes: if mode was set with bit 7 set ("no blanking"), the returned mode will
also have bit 7 set
EGA, VGA, and UltraVision return either AL=03h (color) or AL=07h
(monochrome) in all extended-row text modes
SeeAlso: AH=00h,AH=05h,AX=10F2h/BL=00h,AX=1130h,AX=CD04h
----------100F56BX4756-----------------------
INT 10 - VUIMAGE DISPLAY DRIVER (v2.20 and below)
AX = 0F56h
BX = 4756h
CX = 4944h
DL = function
01h installation check
Return: AX = 5649h
BX = 4443h
CX = 5647h
DH = 01h
02h get first video mode's parameters
Return: AX = BIOS mode number
BX = width in pixels
CX = height in pixels
DX = number of colors
03h get next video mode's parameters
Return: as for DL=02h
04h display line???
ES:DI -> record (see below)
???
Return: ???
Notes: VUIMAGE is a shareware GIF/TIFF image viewer by Offe Enterprises
the use of TSR display drivers was discontinued after v2.20
Format of record for DL=04h:
Offset Size Description
00h WORD row number
02h WORD starting column???
04h WORD ending column???
???
----------100F--SIF123-----------------------
INT 10 - FRIEZE v7.41+ - INSTALLATION CHECK
AH = 0Fh
SI = F123h
DI = 321Fh
Return: AH = number of character columns
AL = display mode (see AH=00h)
BH = active page (see AH=05h)
SI = DI = F345h if installed
Notes: if mode was set with bit 7 set ("no blanking"), the returned mode will
also have bit 7 set
EGA, VGA, and UltraVision return either AL=03h (color) or AL=07h
(monochrome) in all extended-row text modes
SeeAlso: AH=0Fh"VIDEO",AH=4Bh"FRIEZE"
----------1010-------------------------------
INT 10 - BIOS Window Extension v1.1 - SET WINDOW COORDINATES
AH = 10h
CH,CL = row,column of upper left corner of window
DH,DL = row,column of lower right corner of window
Return: AL = status
00h successful
01h failed
AH destroyed
Program: BWE is a TSR by John J. Seal published in May 1986 Dr. Dobb's Journal
Note: when a window has been set, all output via AH=0Eh is restricted to
the specified window
SeeAlso: AH=11h"Window",AH=12h"Window"
----------1010-------------------------------
INT 10 - VIDEO - Eagle PC2 BIOS Rev. C - SET SCROLL SPEED
AH = 10h
AL = speed
00h fast
01h slow (only moves characters during vertical retrace)
Return: AH = previous speed
----------101000----------------------------
INT 10 - VIDEO - SET SINGLE PALETTE REGISTER (PCjr,EGA,MCGA,VGA)
AX = 1000h
BL = palette register number (00h-0Fh)
= attribute register number (undocumented)
10h attribute mode control register (should let BIOS control this)
11h overscan color register (see also AX=1001h)
12h color plane enable register (bits 3-0 enable corresponding
text attribute bit)
13h horizontal PEL panning register
14h color select register
BH = color or attribute register value
Notes: on MCGA, only BX = 0712h is supported
under UltraVision, the palette locking status (see AX=CD01h)
determines the outcome
SeeAlso: AX=1002h,AX=1007h,AX=CD01h
----------101001-----------------------------
INT 10 - VIDEO - SET BORDER (OVERSCAN) COLOR (PCjr,EGA,VGA)
AX = 1001h
BH = border color (00h-3Fh)
BUG: the original IBM VGA BIOS incorrectly updates the parameter save area
and places the border color at offset 11h of the palette table
rather than offset 10h
Note: under UltraVision, the palette locking status (see AX=CD01h)
determines the outcome
SeeAlso: AX=1002h,AX=1008h,AX=CD01h
----------101002-----------------------------
INT 10 - VIDEO - SET ALL PALETTE REGISTERS (PCjr,EGA,VGA)
AX = 1002h
ES:DX -> palette register list
Note: under UltraVision, the palette locking status (see AX=CD01h)
determines the outcome
SeeAlso: AX=1000h,AX=1001h,AX=1009h,AX=CD01h
Format of palette register list:
Offset Size Description
00h 16 BYTEs colors for palette registers 00h through 0Fh
10h BYTE border color
----------101003-----------------------------
INT 10 - VIDEO - TOGGLE INTENSITY/BLINKING BIT (Jr, PS, TANDY 1000, EGA, VGA)
AX = 1003h
BL = new state
00h background intensity enabled
01h blink enabled
BH = 00h to avoid problems on some adapters
Notes: although there is no function to get the current status on adapters
prior to the VGA, bit 5 of 0040h:0065h indicates the state; on the
VGA, use AH=1Bh and check offset 2Dh of the returned data
when configured for a monochrome display, the Boca Research Multi-EGA
with ROM v M1.1 Type D has its screen disrupted if BH is not clear
SeeAlso: AH=08h,AH=1Bh
----------101007-----------------------------
INT 10 - VIDEO - GET INDIVIDUAL PALETTE REGISTER (VGA,UltraVision v2+)
AX = 1007h
BL = palette or attribute (undoc) register number (see AX=1000h)
Return: BH = palette or attribute register value
Note: UltraVision v2+ supports this function even on color EGA systems in
video modes 00h-03h, 10h, and 12h; direct programming of the palette
registers will cause incorrect results because the EGA registers are
write-only. To guard against older versions or unsupported video
modes, programs which expect to use this function on EGA systems
should set BH to FFh on entry.
SeeAlso: AX=1000h,AX=1009h
----------101008-----------------------------
INT 10 - VIDEO - READ OVERSCAN (BORDER COLOR) REGISTER (VGA,UltraVision v2+)
AX = 1008h
Return: BH = border color (00h-3Fh)
Note: UltraVision v2+ supports this function even on color EGA systems in
video modes 00h-03h, 10h, and 12h; direct programming of the palette
registers will cause incorrect results because the EGA registers are
write-only. To guard against older versions or unsupported video
modes, programs which expect to use this function on EGA systems
should set BH to FFh on entry.
SeeAlso: AX=1001h
----------101009-----------------------------
INT 10 - VIDEO - READ ALL PALETTE REGISTERS AND OVERSCAN REGISTER (VGA)
AX = 1009h
ES:DX -> 17-byte buffer (see AX=1002h)
Note: UltraVision v2+ supports this function even on color EGA systems in
video modes 00h-03h, 10h, and 12h; direct programming of the palette
registers will cause incorrect results because the EGA registers are
write-only. To guard against older versions or unsupported video
modes, programs which expect to use this function on EGA systems
should set the ES:DX buffer to FFh before calling.
SeeAlso: AX=1002h,AX=1007h,AX=CD02h
----------101010-----------------------------
INT 10 - VIDEO - SET INDIVIDUAL DAC REGISTER (VGA/MCGA)
AX = 1010h
BX = register number
CH = new value for green (0-63)
CL = new value for blue (0-63)
DH = new value for red (0-63)
SeeAlso: AX=1012h,AX=1015h
----------101012-----------------------------
INT 10 - VIDEO - SET BLOCK OF DAC REGISTERS (VGA/MCGA)
AX = 1012h
BX = starting color register
CX = number of registers to set
ES:DX -> table of 3*CX bytes where each 3 byte group represents one
byte each of red, green and blue (0-63)
SeeAlso: AX=1010h,AX=1017h
----------101013-----------------------------
INT 10 - VIDEO - SELECT VIDEO DAC COLOR PAGE (VGA)
AX = 1013h
BL = subfunction
00h select paging mode
BH = 00h select 4 blocks of 64
BH = 01h select 16 blocks of 16
01h select page
BH = page number (00h to 03h) or (00h to 0Fh)
Note: this function is not valid in mode 13h
SeeAlso: AX=101Ah
----------101015-----------------------------
INT 10 - VIDEO - READ INDIVIDUAL DAC REGISTER (VGA/MCGA)
AX = 1015h
BL = palette register number
Return: DH = red value
CH = green value
CL = blue value
SeeAlso: AX=1010h,AX=1017h
----------101017-----------------------------
INT 10 - VIDEO - READ BLOCK OF DAC REGISTERS (VGA/MCGA)
AX = 1017h
BX = starting palette register
CX = number of palette registers to read
ES:DX -> buffer (3 * CX bytes in size) (see also AX=1012h)
Return: buffer filled with CX red, green and blue triples
SeeAlso: AX=1012h,AX=1015h
----------101018-----------------------------
INT 10 U - VIDEO - SET PEL MASK (VGA/MCGA)
AX = 1018h
BL = new PEL value
SeeAlso: AX=1019h
----------101019-----------------------------
INT 10 U - VIDEO - READ PEL MASK (VGA/MCGA)
AX = 1019h
Return: BL = value read
SeeAlso: AX=1018h
----------10101A-----------------------------
INT 10 - VIDEO - GET VIDEO DAC COLOR-PAGE STATE (VGA)
AX = 101Ah
Return: BL = paging mode
00h four pages of 64
01h sixteen pages of 16
BH = current page
SeeAlso: AX=1013h
----------10101B-----------------------------
INT 10 - VIDEO - PERFORM GRAY-SCALE SUMMING (VGA/MCGA)
AX = 101Bh
BX = starting palette register
CX = number of registers to convert
SeeAlso: AH=12h/BL=33h
----------1010E0-----------------------------
INT 10 - VIDEO - Diamond Speedstar 24 - SET 24-BIT GRAPHICS MODE
AX = 10E0h
BL = video mode (see also AH=00h)
2Eh = 640x480
Return: ???
SeeAlso: AH=00h,AX=10F0h
----------1010F0-----------------------------
INT 10 - VIDEO - Tseng ET-4000 BIOS - SET HiColor GRAPHICS MODE
AX = 10F0h
BL = video mode (see also AH=00h)
32768-color modes:
13h = 320x200
2Dh = 640x350
2Eh = 640x480
2Fh = 640x400
30h = 800x600
16M-color modes:
3Eh = 640x480 (Genoa 7900)
Return: AL = 10h if supported
AH = status
00h if successful
other on error
Note: the Tseng HiColor BIOS extensions are supported by:
Diamond Computer Systems SpeedStar HiColor VGA
Everex Systems HC VGA
Focus Information Systems 2theMax 4000
Cardinal Technologies VGA732
Orchid ProDesigner IIs Genoa 7900
SeeAlso: AH=00h,AX=10E0h,AX=10F1h,AX=10F2h
----------1010F1-----------------------------
INT 10 - VIDEO - Tseng ET-4000 BIOS - GET DAC TYPE
AX = 10F1h
Return: AL = 10h if supported
BL = type of digital/analog converter
00h normal VGA DAC
01h Sierra SC1148x HiColor DAC
02h new Sierra DAC
else other HiColor DAC
SeeAlso: AX=10F0h,AX=10F2h
----------1010F2BL00-------------------------
INT 10 u - VIDEO - Tseng ET-4000 BIOS - CHECK IF IN HiColor MODE
AX = 10F2h
BL = 00h
Return: AX = 0010h if supported
BL = video mode type
00h normal
else HiColor mode
SeeAlso: AH=0Fh,AX=10F0h,AX=10F1h
----------1011-------------------------------
INT 10 - BIOS Window Extension v1.1 - GET WINDOW COORDINATES
AH = 11h
Return: CH,CL = row,column of upper left corner
DH,DL = row,column of lower right corner
Program: BWE is a TSR by John J. Seal published in May 1986 Dr. Dobb's Journal
SeeAlso: AH=10h"Window",AH=12h"Window"
----------1011-------------------------------
INT 10 - VIDEO - TEXT-MODE CHARACTER GENERATOR FUNCTIONS (PS, EGA, VGA)
AH = 11h
The following functions will cause a mode set, completely resetting
the video environment, but without clearing the video buffer
AL = 00h, 10h: load user-specified patterns
ES:BP -> user table
CX = count of patterns to store
DX = character offset into map 2 block
BL = block to load in map 2
BH = number of bytes per character pattern
AL = 01h, 11h: load ROM monochrome patterns (8 by 14)
BL = block to load
AL = 02h, 12h: load ROM 8 by 8 double-dot patterns
BL = block to load
AL = 03h: set block specifier
BL = block specifier
(EGA/MCGA) bits 0,1 = block selected by chars with attribute
bit 3 = 0
bits 2,3 = block selected by chars with attribute
bit 3 = 1
(VGA) bits 0,1,4 = block selected by attribute bit 3 = 0
bits 2,3,5 = block selected by attribute bit 3 = 1
AL = 04h, 14h: load ROM 8x16 character set (VGA)
BL = block to load
Notes: The routines called with AL=1xh are designed to be called only
immediately after a mode set and are similar to the routines called
with AL=0xh, except that:
Page 0 must be active.
Bytes/character is recalculated.
Max character rows is recalculated.
CRT buffer length is recalculated.
CRTC registers are reprogrammed as follows:
R09 = bytes/char-1 ; max scan line (mode 7 only)
R0A = bytes/char-2 ; cursor start
R0B = 0 ; cursor end
R12 = ((rows+1)*(bytes/char))-1 ; vertical display end
R14 = bytes/char ; underline loc
(*** BUG: should be 1 less ***)
the current block specifiers may be determined with INT 10/AH=1Bh,
looking at offsets 2Bh and 2Ch of the returned data (VGA only)
SeeAlso: AH=1Bh,AX=CD10h
----------1011-------------------------------
INT 10 - VIDEO - GRAPHICS-MODE CHARACTER GENERATOR FUNCTIONS (PS, EGA, VGA)
AH = 11h
AL = 20h: set user 8 by 8 graphics characters (INT 1F)
ES:BP -> user table
AL = 21h: set user graphics characters
ES:BP -> user table
CX = bytes per character
BL = row specifier
00h user set
DL = number of rows
01h 14 rows
02h 25 rows
03h 43 rows
AL = 22h: ROM 8 by 14 set
BL = row specifier (see above)
AL = 23h: ROM 8 by 8 double dot
BL = row specifier (see above)
AL = 24h: load 8x16 graphics characters (VGA/MCGA)
BL = row specifier (see above)
AL = 29h: load 8x16 graphics characters (Compaq Systempro)
BL = row specifier (see above)
Notes: these functions are meant to be called only after a mode set
UltraVision v2+ sets INT 43 to the appropriate font for AL=22h,23h,24h,
and 29h
SeeAlso: INT 1F, INT 43
----------101130-----------------------------
INT 10 - VIDEO - GET FONT INFORMATION (EGA, MCGA, VGA)
AX = 1130h
BH = pointer specifier
00h INT 1Fh pointer
01h INT 43h pointer
02h ROM 8x14 character font pointer
03h ROM 8x8 double dot font pointer
04h ROM 8x8 double dot font (high 128 characters)
05h ROM alpha alternate (9 by 14) pointer (EGA,VGA)
06h ROM 8x16 font (MCGA, VGA)
07h ROM alternate 9x16 font (VGA only)
11h (UltraVision v2+) 8x20 font (VGA) or 8x19 font (autosync EGA)
12h (UltraVision v2+) 8x10 font (VGA) or 8x11 font (autosync EGA)
Return: ES:BP = specified pointer
CX = bytes/character of on-screen font (not the requested font!)
DL = character rows on screen - 1 (VGA)
= character rows on screen (EGA)
Note: for UltraVision v2+, the 9xN alternate fonts follow the corresponding
8xN font at ES:BP+256N
SeeAlso: AX=1100h,AX=1120h,INT 1F,INT 43
----------1012-------------------------------
INT 10 - BIOS Window Extension v1.1 - GET BLANKING ATTRIBUTE
AH = 12h
Return: BH = attribute to use on blanked lines when scrolling
Program: BWE is a TSR by John J. Seal published in May 1986 Dr. Dobb's Journal
SeeAlso: AH=11h"Window",AH=12h"Window"
----------1012--BL10-------------------------
INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (PS, EGA, VGA, MCGA) - GET EGA INFO
AH = 12h
BL = 10h
Return: BH = 00h color mode in effect (I/O port 3Dxh)
01h mono mode in effect (I/O port 3Bxh)
BL = 00h 64k bytes memory installed
01h 128k bytes memory installed
02h 192k bytes memory installed
03h 256k bytes memory installed
CH = feature bits
CL = switch settings
Note: one possible check for the presence of an EGA or later display card
is to call this function with BH=FFh; if not present, BH will be
unchanged on return
----------1012--BL20-------------------------
INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (PS,EGA,VGA,MCGA) - ALTERNATE PRTSC
AH = 12h
BL = 20h select alternate print screen routine
Notes: installs a PrtSc routine from the video card's BIOS to replace the
default PrtSc handler from the ROM BIOS, which usually does not
understand screen heights other than 25 lines
some adapters disable print-screen instead of enhancing it
SeeAlso: INT 05
----------1012--BL2E-------------------------
INT 10 - Tseng ET-4000 BIOS v3.00 - BUG
AH = 12h
BL = 2Eh
Note: due to an omitted end-of-list marker, this version of the BIOS will
crash the system on this function
----------1012--BL30-------------------------
INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA) - SELECT VERTICAL RESOLUTION
AH = 12h
BL = 30h
AL = vertical resolution
00h 200 scan lines
01h 350 scan lines
02h 400 scan lines
Return: AL = 12h if function supported
----------1012--BL31-------------------------
INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA, MCGA) - PALETTE LOADING
AH = 12h
BL = 31h
AL = 00h enable default palette loading
01h disable default palette loading
Return: AL = 12h if function supported
----------1012--BL32-------------------------
INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA, MCGA) - VIDEO ADDRESSING
AH = 12h
BL = 32h
AL = 00h enable video addressing
01h disable video addressing
Return: AL = 12h if function supported
----------1012--BL33-------------------------
INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA, MCGA) - GRAY-SCALE SUMMING
AH = 12h
BL = 33h
AL = 00h enable gray scale summing
01h disable gray scale summing
Return: AL = 12h if function supported
SeeAlso: AX=101Bh,AX=BF06h
----------1012--BL34-------------------------
INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA) - CURSOR EMULATION
AH = 12h
BL = 34h
AL = 00h enable alphanumeric cursor emulation
01h disable alphanumeric cursor emulation
Return: AL = 12h if function supported
----------1012--BL35-------------------------
INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (PS) - DISPLAY-SWITCH INTERFACE
AH = 12h
BL = 35h
AL = 00h initial adapter video off
01h initial planar video on
02h switch active video off
03h switch inactive video on
80h *UNDOCUMENTED* set system board video active flag
ES:DX -> buffer (128 byte save area if AL = 0, 2 or 3)
Return: AL = 12h if function supported
----------1012--BL36-------------------------
INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (PS, VGA) - VIDEO REFRESH CONTROL
AH = 12h
BL = 36h
AL = 00h enable refresh
01h disable refresh
Return: AL = 12h if function supported
----------1012--BH55-------------------------
INT 10 - VIDEO - ALTERNATE FUNC SELECT (ATI,Tatung,Taxan) - ENHANCED FEATURES
AH = 12h
BH = 55h
BL = subfunction
00h disabled enhanced features
01h enable enhanced features
02h get status
Return: AL = status flags
bit 3: set if enhanced features enabled
bits 7-5 monitor type
000 PS/2 mono
001 PS/2 color
010 multi-sync
011 Taxan 650 25kHz
100 RGB
101 mono
110 EGA
111 Compaq internal
03h disable register trapping (CGA emulation)
04h enable register trapping
05h program mode described by table at ES:BP
06h get mode table
AL = video mode
Return: ES:BP -> table suitable for mode AL (and subfnc BL=05h)
BP = FFFFh on error
Format of ATI VGA Wonder video mode table:
Offset Size Description
00h BYTE number of columns
01h BYTE maximum row (number of rows - 1)
02h BYTE scan lines per row
03h WORD video buffer size in bytes
05h 4 BYTEs values for Sequencer registers 1-4
09h BYTE value for Miscellaneous Output register
0Ah 25 BYTEs values for CRTC registers 00h-18h
00h horizontal total size (chars)
01h horizontal displayed (chars)
02h horizontal sync position (chars)
03h horizontal sync width (chars)
04h vertical total size (char rows)
05h vertical total adjust (scan lines)
06h vertical displayed (char rows)
07h vertical sync position (char rows)
08h interlace mode
09h max scan line in row
0Ah cursor start scan line
0Bh cursor end scan line
0Ch screen memory start (high)
0Dh screen memory start (low)
0Eh cursor address (high)
0Fh cursor address (low)
10h light pen (high)
11h light pen (low)
23h 20 BYTEs default palette (values for Attribute Controller regs 00h-13h)
37h 9 BYTEs values for Graphics Controller registers 00h-08h
----------1012--BL74-------------------------
INT 10 - Tseng ET-4000 BIOS v3.00 - BUG
AH = 12h
BL = 74h
Note: due to an omitted end-of-list marker, this version of the BIOS will
crash the system on this function
----------1012--BL80-------------------------
INT 10 - Tseng ET-4000 BIOS v3.00 - BUG
AH = 12h
BL = 80h
Note: due to an omitted end-of-list marker, this version of the BIOS will
crash the system on this function
----------1012--BLBE-------------------------
INT 10 - Tseng ET-4000 BIOS v3.00 - BUG
AH = 12h
BL = BEh
Note: due to an omitted end-of-list marker, this version of the BIOS will
crash the system on this function
----------1012--BLC6-------------------------
INT 10 - Tseng ET-4000 BIOS v3.00 - BUG
AH = 12h
BL = C6h
Note: due to an omitted end-of-list marker, this version of the BIOS will
crash the system on this function
----------1012--BLF0-------------------------
INT 10 - Tseng ET-4000 BIOS v3.00 - BUG
AH = 12h
BL = F0h
Note: due to an omitted end-of-list marker, this version of the BIOS will
crash the system on this function
----------1013-------------------------------
INT 10 - VIDEO - WRITE STRING (AT and later,EGA)
AH = 13h
AL = write mode
bit 0: update cursor after writing
1: string contains alternating characters and attributes
BH = page number
BL = attribute if string contains only characters
CX = number of characters in string
DH,DL = row,column at which to start writing
ES:BP -> string to write
Notes: recognizes CR, LF, BS, and bell
also available PC or XT with EGA or higher
HP 95LX only supports write mode 00h
BUG: on the IBM VGA Adapter, any scrolling which may occur is performed on
the active page rather than the requested page
SeeAlso: AH=09h,AH=0Ah
----------101400-----------------------------
INT 10 - VIDEO - LOAD USER-SPECIFIED LCD CHARACTER FONT (CONV,Compaq Port 386)
AX = 1400h
ES:DI -> character font
BH = number of bytes per character
08h or 10h (Compaq)
BL = 00h load main font (block 0)
01h load alternate font (block 1)
CX = number of characters to store
DX = character offset into RAM font area
SeeAlso: AH=11h,AX=1401h
----------101401-----------------------------
INT 10 - VIDEO - LOAD SYSTEM ROM DEFAULT LCD CHARACTER FONT (CONV,CP386)
AX = 1401h
BL = font to load
00h main font (block 0)
01h alternate font (block 1)
SeeAlso: AH=11h,AX=1400h
----------101402-----------------------------
INT 10 - VIDEO - SET MAPPING OF LCD HIGH INTENSITY ATTRIBUTES (CONV,CP386)
AX = 1402h
BL = function
00h ignore high intensity attribute
01h map high intensity to underscore
02h map high intensity to reverse video
03h map high intensity to selected alternate font
B0h half intensity (Compaq)
B1h toggle active intensity bit interpretation (CP386)
----------1015-------------------------------
INT 10 - VIDEO - GET PHYSICAL DISPLAY PARAMETERS (CONVERTIBLE)
AH = 15h
Return: AX = alternate display adapter type
0000h none
5140h LCD
5153h CGA
5151h mono
ES:DI -> parameter table (see below)
SeeAlso: AH=1Bh
Format of display parameter table:
Offset Size Description
00h WORD monitor model number
02h WORD vertical pixels per meter
04h WORD horizontal pixels per meter
06h WORD total vertical pixels
08h WORD total horizontal pixels
0Ah WORD horizontal pixel separation in micrometers
0Ch WORD vertical pixel separation in micrometers
----------1015-------------------------------
INT 10 - VIDEO - SET SUPERIMPOSE MODE (Sperry PC)
AH = 15h
AL = superimpose mode
00h show graphics screen
01h show text screen
02h show text screen superimposed on graphics screen
----------101A-------------------------------
INT 10 - VIDEO - DISPLAY COMBINATION (PS,VGA/MCGA)
AH = 1Ah
AL = 00h read display combination code
Return: BL = active display code (see below)
BH = alternate display code
01h set display combination code
BL = active display code (see below)
BH = alternate display code
Return: AL = 1Ah if function was supported
Values for display combination code:
00h no display
01h monochrome adapter w/ monochrome display
02h CGA w/ color display
03h reserved
04h EGA w/ color display
05h EGA w/ monochrome display
06h PGA w/ color display
07h VGA w/ monochrome analog display
08h VGA w/ color analog display
09h reserved
0Ah MCGA w/ digital color display
0Bh MCGA w/ monochrome analog display
0Ch MCGA w/ color analog display
FFh unknown display type
----------101B-------------------------------
INT 10 - VIDEO - FUNCTIONALITY/STATE INFORMATION (PS,VGA/MCGA)
AH = 1Bh
BX = implementation type
0000h return funtionality/state information
ES:DI -> 64 byte buffer for state information (see below)
Return: AL = 1Bh if function supported
ES:DI buffer filled with state information
SeeAlso: AH=15h
Format of state information:
Offset Size Description
00h DWORD address of static funtionality table (see below)
04h BYTE video mode in effect
05h WORD number of columns
07h WORD length of regen buffer in bytes
09h WORD starting address of regen buffer
0Bh WORD cursor position for page 0
0Dh WORD cursor position for page 1
0Fh WORD cursor position for page 2
11h WORD cursor position for page 3
13h WORD cursor position for page 4
15h WORD cursor position for page 5
17h WORD cursor position for page 6
19h WORD cursor position for page 7
1Bh WORD cursor type
1Dh BYTE active display page
1Eh WORD CRTC port address
20h BYTE current setting of register (3?8)
21h BYTE current setting of register (3?9)
22h BYTE number of rows
23h WORD bytes/character
25h BYTE display combination code of active display
26h BYTE DCC of alternate display
27h WORD number of colors supported in current mode
29h BYTE number of pages supported in current mode
2Ah BYTE number of scan lines active
(0,1,2,3) = (200,350,400,480)
2Bh BYTE primary character block
2Ch BYTE secondary character block
2Dh BYTE miscellaneous flags
bit 0 all modes on all displays on
1 gray summing on
2 monochrome display attached
3 default palette loading disabled
4 cursor emulation enabled
5 0 = intensity; 1 = blinking
6 PS/2 P70 plasma display (without 9-dot wide font) active
7 reserved
2Eh 3 BYTEs reserved (00h)
31h BYTE video memory available
00h = 64K, 01h = 128K, 02h = 192K, 03h = 256K
32h BYTE save pointer state flags
bit 0 512 character set active
1 dynamic save area present
2 alpha font override active
3 graphics font override active
4 palette override active
5 DCC override active
6 reserved
7 reserved
33h 13 BYTEs reserved (00h)
Format of Static Functionality Table:
Offset Size Description
00h BYTE modes supported #1
bit 0 to bit 7 = 1 modes 0,1,2,3,4,5,6 supported
01h BYTE modes supported #2
bit 0 to bit 7 = 1 modes 8,9,0Ah,0Bh,0Ch,0Dh,0Eh,0Fh supported
02h BYTE modes supported #3
bit 0 to bit 3 = 1 modes 10h,11h,12h,13h supported
bit 4 to bit 7 reserved
03h 4 BYTEs reserved
07h BYTE scan lines supported
bit 0 to bit 2 = 1 if scan lines 200,350,400 supported
08h BYTE total number of character blocks available in text modes
09h BYTE maximum number of active character blocks in text modes
0Ah BYTE miscellaneous function flags #1
bit 0 all modes on all displays function supported
1 gray summing function supported
2 character font loading function supported
3 default palette loading enable/disable supported
4 cursor emulation function supported
5 EGA palette present
6 color palette present
7 color paging function supported
0Bh BYTE miscellaneous function flags #2
bit 0 light pen supported
1 save/restore state function 1Ch supported
2 intensity blinking function supported
3 Display Combination Code supported
4-7 reserved
0Ch WORD reserved
0Eh BYTE save pointer function flags
bit 0 512 character set supported
1 dynamic save area supported
2 alpha font override supported
3 graphics font override supported
4 palette override supported
5 DCC extension supported
6 reserved
7 reserved
0Fh BYTE reserved
----------101C-------------------------------
INT 10 - VIDEO - SAVE/RESTORE VIDEO STATE (PS50+,VGA)
AH = 1Ch
AL = 00h return state buffer size
Return: BX = number of 64-byte blocks needed
01h save video state
ES:BX -> buffer
02h restore video state
ES:BX -> buffer containing previously saved state
CX = requested states
bit 0 video hardware
1 BIOS data areas
2 color registers and DAC state
3-15 reserved
Return: AL = 1Ch if function supported
Notes: many BIOSes corrupt the video registers when saving the state, so a
program should restore the state immediately after saving it (the
saved data is uncorrupted)
the BIOS data area consists of the 96 bytes from 0040h:0049h-00A8h
Format of video hardware state:
Offset Size Description
00h BYTE sequencer index register
01h BYTE CRTC index register
02h BYTE graphics controller index register
03h BYTE attribute controller index register
04h BYTE feature controller register
05h 4 BYTEs sequencer registers
09h BYTE sequencer register 0
0Ah 25 BYTEs CRTC registers 0-8
23h 16 BYTEs palette registers 00h-0Fh
33h 4 BYTEs attribute registers 10h-13h
37h 9 BYTEs graphics controller registers 0-8
40h BYTE CRTC base address (low)
41h BYTE CRTC base address (high)
42h BYTE plane 0 latch
43h BYTE plane 1 latch
44h BYTE plane 2 latch
45h BYTE plane 3 latch
Format of DAC state:
Offset Size Description
00h BYTE read/write mode DAC
01h BYTE pixel address
02h BYTE pixel mask
03h 768 BYTEs color data (256 triples)
303h BYTE color select register
----------101D-------------------------------
INT 10 - Tseng ET-4000 BIOS v3.00 - BUG
AH = 1Dh
Note: this version of the BIOS jumps to a random location on this function
due to a fencepost error
---------------------------------------------
INT 10 - VIDEO - XGA - GET DMQS (Display Mode Query and Set) DATA LENGTH
AX = 1F00h
Return: AL = 1Fh if supported
BX = number of bytes of DMQS data
Note: not supported on the original IBM XGA, only on XGA-NI (non-interlaced)
and later models.
SeeAlso: AX=1F01h
---------------------------------------------
INT 10 - VIDEO - XGA - READ DMQS DATA
AX = 1F01h
ES:DI -> user buffer for return data (call AH=1F00 for size)
Return: AL = 1Fh if function supported
user buffer filled with DMQS data, see below.
Note: not supported on the original IBM XGA, only on XGA-NI (non-interlaced)
and later models.
SeeAlso: AX=1F00h
Format of DMQS buffer:
Offset Size Description
00h WORD offset (in bytes) to DMQS data for next XGA instance
02h BYTE slot number
03h BYTE XGA implementation function level identifier
04h BYTE XGA implementation resolution level identifier
05h WORD vendor identifier - identifies card vendor
07h WORD vendor defined field
09h WORD XGA adapter I/O register base address
0Bh WORD XGA coprocessor register base address
(Paragraph---multiply by 10h to get physical address)
0Dh WORD 1 Megabyte system video memory aperture
0000h if not allocated
(Multiply by 100000h to get physical address)
0Fh WORD 4 Megabyte system video memory aperture
0000h if not allocated
(Multiply by 100000h to get physical address)
11h WORD video memory base address
(Multiply by 100000h to get physical address)
13h WORD composite ID of the attached display
15h BYTE amount of video memory available, in multiples of 256K
bytes
16h DWORD alternate XGA coprocessor register base address. 0 =
none.
1Ah var DMQS Data for further XGA Instances (as above)
Note: "Instances" refers to the capability of having up to 8 XGA
adapters in one computer.
----------103000CX0000-----------------------
INT 10 - VIDEO - LOCATE 3270PC CONFIGURATION TABLE (INSTALLATION CHECK)
AX = 3000h
CX = 0000h
DX = 0000h
Return: CX:DX -> 3270PC configuration table (see below)
CX:DX = 0000h:0000h if 3270PC Control Program not active
Format of 3270 PC configuration table:
Offset Size Description
00h BYTE aspect ratio X
01h BYTE aspect ratio Y
02h BYTE monitor type
00h = 5151 (mono) or 5272 (color)
01h = 3295
02h = 5151 or 5272 with XGA (???) graphics adapter
03h = 5279 with 3270PC G adapter
04h = 5379 model C01 with 3270PC GX adapter
05h = 5379 model M01 with 3270PC GX adapter
07h = non-3270PC with 3270 Workstation Program
FFh = 3270PC Control Program not loaded
03h BYTE reserved
04h BYTE adapter ID
00h = 5151/5272 adapter
04h = 5151/5272 with XGA adapter
30h = 3295 or 3270PC G/GX adapter
05h BYTE reserved
06h BYTE function flags 1
bit 7: mono text, 1 page
6: color text, 1 page
5: color text, 4 pages
4: CGA color graphics
3: 720x350 two-color graphics
2: 360x350 four-color graphics
1: 720x350 eight-color graphics
07h BYTE function flags 2
bit 6: GPI graphics supported
08h WORD segment address of Control Program Level table (see below)
0Ah 10 BYTEs reserved
Format of Control Program Level table:
Offset Size Description
00h WORD program version
02xxh = 3270PC Control Program v2.xx
03xxh = 3270PC Control Program v3.xx
04xxh = 3270 Workstation Program v1.xx
02h BYTE Control Program ID (00h)
03h 27 BYTEs Control Program Descriptor ("IBM 3270 PC CONTROL PROGRAM")
----------1038-------------------------------
INT 10 - Tinytalk Personal v1.09f - GET CONFIGURATION INFO
AH = 38h
Return: ES:DI -> configuration info (see below)
Notes: Tinytalk is a shareware screen reader by OMS Development/Eric Bohlman
this call is also used as the installation check by verifying that the
returned ES:DI points at valid configuration info
SeeAlso: INT 14/AX=F0F1h,INT 2F/FB00h"AutoBraille"
Format of configuration info:
Offset Size Description
00h 8 BYTEs signature "TTCONFIG"
08h WORD size of configuration data, not counting signature, this WORD,
or the following byte
0Ah BYTE ???
0Bh ??? configuration data
----------1040-------------------------------
INT 10 - VIDEO - SET GRAPHICS MODE (Hercules GRAFIX)
AH = 40h
SeeAlso: AH=00h,AH=41h
----------1041-------------------------------
INT 10 - VIDEO - SET TEXT MODE (Hercules GRAFIX)
AH = 41h
SeeAlso: AH=00h,AH=40h
----------1042-------------------------------
INT 10 - VIDEO - CLEAR CURRENT PAGE (Hercules GRAFIX)
AH = 42h
SeeAlso: AH=45h
----------1043-------------------------------
INT 10 - VIDEO - SELECT DRAWING PAGE (Hercules GRAFIX)
AH = 43h
AL = page number (0,1)
SeeAlso: AH=05h,AH=44h,AH=45h
----------1044-------------------------------
INT 10 - VIDEO - SELECT DRAWING FUNCTION (Hercules GRAFIX)
AH = 44h
AL = drawing function
00h clear pixels
01h set pixels
02h invert pixels
SeeAlso: AH=45h,AH=46h,AH=4Ch,AH=4Dh
----------1045-------------------------------
INT 10 - VIDEO - SELECT PAGE TO DISPLAY (Hercules GRAFIX)
AH = 45h
AL = page number (0,1)
SeeAlso: AH=05h,AH=42h,AH=43h
----------1046-------------------------------
INT 10 - VIDEO - DRAW ONE PIXEL (Hercules GRAFIX)
AH = 46h
DI = x (0-720)
BP = y (0-347)
Note: function 44h determines operation and function 43h which page to use
SeeAlso: AH=0Ch,AH=47h,AH=49h,AH=4Ch,AH=4Dh
----------1047-------------------------------
INT 10 - VIDEO - FIND PIXEL VALUE (Hercules GRAFIX)
AH = 47h
DI = x (0-720)
BP = y (0-347)
Return: AL = 00h pixel clear
AL = 01h pixel set
Note: function 43h specifies which page is used
SeeAlso: AH=0Dh,AH=46h
----------1048-------------------------------
INT 10 - VIDEO - MOVE TO POINT (Hercules GRAFIX)
AH = 48h
DI = x (0-720)
BP = y (0-347)
SeeAlso: AH=49h
----------1049-------------------------------
INT 10 - VIDEO - DRAW TO POINT (Hercules GRAFIX)
AH = 49h
DI = x (0-720)
BP = y (0-347)
Note: function 48h or 49h specify first point, 44h operation and 43h page to
use
SeeAlso: AH=43h,AH=44h,AH=48h,AH=4Ch,AH=4Dh
----------104A-------------------------------
INT 10 - VIDEO - BLOCK FILL (Hercules GRAFIX)
AH = 4Ah
DI = x coordinate of lower left corner
BP = y coordinate of lower left corner
BX = height in pixels
CX = width in pixels
Note: draws a solid rectangle
SeeAlso: AH=4Eh
----------104B-------------------------------
INT 10 - VIDEO - DISPLAY CHARACTER (Hercules GRAFIX)
AH = 4Bh
AL = character to display
DI = x (0-720)
BP = y (0-347)
Note: unlike the other BIOS character functions character position is
specified in pixels rather than rows and columns
SeeAlso: AH=09h,AH=0Ah
----------104B-------------------------------
INT 10 - FRIEZE v7.0+ - API
AH = 4Bh
CL = function
00h reserved
01h load window
ES:BX -> ASCIZ filename from which to read
02h save window
ES:BX -> ASCIZ filename to which to write
03h (v7.41) set ???
AL = ???
04h (v7.41) set ???
AL = ???
06h (v7.41) ???
AL = ???
07h set window size
ES:BX -> four-WORD structure with Xmin, Ymin, Xmax, Ymax
09h set patterns
ES:BX -> 16-BYTE vector of screen->printer color correspondnces
0Ah get patterns
ES:BX -> 16-BYTE buffer for color correspondences
0Bh set mode
AL = mode
0Ch (v7.41) ???
AL = ???
00h ??? (calls original INT 05)
else ???
0Dh (v7.41) ???
AL = ???
00h ??? (calls original INT 05)
else ???
0Eh (v7.41) ???
???
0Fh get window
ES:BX -> four-WORD buffer for Xmin, Ymin, Xmax, Ymax
10h set print options
ES:BX -> printer options in same format as FRIEZE cmdline
11h (v7.41) ???
???
12h (v7.41) ???
???
13h (v7.41) ???
???
14h get version
Return: AH = major version (00h if FRIEZE version before 7)
AL = minor version
15h set parameters
ES:BX -> parameter table (see below)
16h get parameters
ES:BX -> buffer for parameter table (see below)
17h get printer resolution
ES:BX -> 12-WORD table for six horizontal/vertical resol pairs
18h reserved (v8.0 only)
50h (v7.41) get ???
Return: AX = ???
51h (v7.41) get ???
Return: ES = ??? (seen 2348h)
AX = ??? (seen 8432h)
Return: AX = status
00h successful
01h user aborted printout with ESC
02h reserved
03h file read error
04h file write error
05h file not found
06h invalid header (not an image or wrong screen mode)
07h file close error
08h disk error
09h printer error
0Ah invalid function
0Bh can't create file
0Ch wrong video mode
SeeAlso: AH=0Fh/SI=F123h
Format of parameter table:
Offset Size Description
00h WORD top margin (1/100 inch)
02h WORD left margin (1/100 inch)
04h WORD horizontal size (1/100 inch)
06h WORD vertical size (1/100 inch)
08h WORD quality/draft mode
00h draft mode
01h quality mode
02h use horizontal/vertical resolution for output resolution
0Ah WORD printer horizontal resolution (dots per inch)
0Ch WORD printer vertical resolution (dots per inch)
0Eh WORD reserved (FFFFh)
Note: any field which should remain unchanged may be filled with FFFFh
----------104C-------------------------------
INT 10 - VIDEO - DRAW ARC (Hercules GRAFIX)
AH = 4Ch
AL = quadrant (1 = upper right, 2 = upper left, etc)
DI = x coordinate of center
BP = y coordinate of center
BX = radius
SeeAlso: AH=49h,AH=4Dh
----------104D-------------------------------
INT 10 - VIDEO - DRAW CIRCLE (Hercules GRAFIX)
AH = 4Dh
DI = x of center
BP = y of center
BX = radius
SeeAlso: AH=49h,AH=4Ch
----------104E-------------------------------
INT 10 - VIDEO - FILL AREA (Hercules GRAFIX)
AH = 4Eh
DI = x coordinate of an interior point
BP = y coordinate of an interior point
Notes: fills convex polygonal areas
the first fill makes the figure solid, the second erases it
SeeAlso: AH=4Ah
----------104F00-----------------------------
INT 10 - VESA SuperVGA BIOS - GET SuperVGA INFORMATION
AX = 4F00h
ES:DI -> 256-byte buffer for SuperVGA information (see below)
Return: AL = 4Fh function supported
AH = status
00h successful
01h failed
SeeAlso: AX=4F01h,AX=7F00h
Format of SuperVGA information:
Offset Size Description
00h 4 BYTEs signature ('VESA')
04h WORD VESA version number
06h DWORD pointer to OEM name
"761295520" for ATI
0Ah 4 BYTEs capabilities
0Eh DWORD pointer to list of supported VESA and OEM video modes
(list of words terminated with FFFFh)
12h 238 BYTEs reserved
----------104F01-----------------------------
INT 10 - VESA SuperVGA BIOS - GET SuperVGA MODE INFORMATION
AX = 4F01h
CX = SuperVGA video mode
ES:DI -> 256-byte buffer mode information (see below)
Return: AL = 4Fh function supported
AH = status
00h successful
01h failed
SeeAlso: AX=4F00h,AX=4F02h
Format of mode information:
Offset Size Description
00h WORD mode attributes
bit 0: mode supported
bit 1: optional information available
bit 2: BIOS output supported
bit 3: set if color, clear if monochrome
bit 4: set if graphics mode, clear if text mode
02h BYTE window A attributes
bit 0: exists
bit 1: readable
bit 2: writable
bits 3-7 reserved
03h BYTE window B attributes (as for window A)
04h WORD window granularity in K
06h WORD window size in K
08h WORD start segment of window A
0Ah WORD start segment of window B
0Ch DWORD -> FAR window positioning function (equivalent to AX=4F05h)
10h WORD bytes per scan line
---remainder is optional for VESA modes in v1.0/1.1, needed for OEM modes---
12h WORD width in pixels
14h WORD height in pixels
16h BYTE width of character cell in pixels
17h BYTE height of character cell in pixels
18h BYTE number of memory planes
19h BYTE number of bits per pixel
1Ah BYTE number of banks
1Bh BYTE memory model type
00h text
01h CGA graphics
02h HGC graphics
03h 16-color (EGA) graphics
04h packed pixel graphics
05h "sequ 256" (non-chain 4) graphics
06h direct color (HiColor, 24-bit color)
07h YUV
08h-0Fh reserved for VESA
10h-FFh OEM memory models
1Ch BYTE size of bank in K
1Dh BYTE number of image pages
1Eh BYTE reserved (0)
---VBE v1.2+---
1Fh BYTE red mask size
20h BYTE red field position
21h BYTE green mask size
22h BYTE green field size
23h BYTE blue mask size
24h BYTE blue field size
25h BYTE reserved mask size
26h BYTE reserved mask position
27h BYTE direct color mode info
28h BYTE reserved (0)
----------104F02-----------------------------
INT 10 - VESA SuperVGA BIOS - SET SuperVGA VIDEO MODE
AX = 4F02h
BX = mode
bit 15 set means don't clear video memory
Return: AL = 4Fh function supported
AH = status
00h successful
01h failed
SeeAlso: AX=4F01h,AX=4F03h
Values for VESA video mode:
00h-FFh OEM video modes (see AH=00h)
100h 640x400x256
101h 640x480x256
102h 800x600x16
103h 800x600x256
104h 1024x768x16
105h 1024x768x256
106h 1280x1024x16
107h 1280x1024x256
108h 80x60 text
109h 132x25 text
10Ah 132x43 text
10Bh 132x50 text
10Ch 132x60 text
---VBE v1.2---
10Dh 320x200x32K
10Eh 320x200x64K
10Fh 320x200x16M
110h 640x480x32K
111h 640x480x64K
112h 640x480x16M
113h 800x600x32K
114h 800x600x64K
115h 800x600x16M
116h 1024x768x32K
117h 1024x768x64K
118h 1024x768x16M
119h 1280x1024x32K
11Ah 1280x1024x64K
11Bh 1280x1024x16M
Values for S3 OEM video mode:
201h 640x480x256
202h 800x600x16
203h 800x600x256
204h 1024x768x16
205h 1024x768x256
206h 1280x960x16
208h 1280x1024x16
301h 640x480x32K
----------104F03-----------------------------
INT 10 - VESA SuperVGA BIOS - GET CURRENT VIDEO MODE
AX = 4F03h
Return: AL = 4Fh function supported
AH = status
00h successful
01h failed
BX = video mode (see AX=4F02h)
SeeAlso: AX=4F02h
----------104F04-----------------------------
INT 10 - VESA SuperVGA BIOS - SAVE/RESTORE SuperVGA VIDEO STATE
AX = 4F04h
DL = subfunction
00h get state buffer size
Return: BX = number of 64-byte blocks needed
01h save video states
ES:BX -> buffer
02h restore video states
ES:BX -> buffer
CX = flags for states to save/restore
bit 0: video hardware state
bit 1: video BIOS data state
bit 2: video DAC state
bit 3: SuperVGA state
Return: AL = 4Fh function supported
AH = status
00h successful
01h failed
----------104F05-----------------------------
INT 10 - VESA SuperVGA BIOS - CPU VIDEO MEMORY CONTROL
AX = 4F05h
BH = subfunction
00h select video memory window
DX = window address in video memory (in granularity units)
01h get video memory window
Return: DX = window address in video memory (in gran. units)
BL = window number
00h window A
01h window B
Return: AL = 4Fh function supported
AH = status
00h successful
01h failed
SeeAlso: AX=4F01h,AX=4F06h,AX=4F07h,AX=7000h/BX=0004h
----------104F06-----------------------------
INT 10 - VESA SuperVGA BIOS v1.1 - GET/SET LOGICAL SCAN LINE LENGTH
AX = 4F06h
BL = function
00h set scan line length
CX = desired width in pixels
01h get scan line length
Return: AL = 4Fh if function supported
AH = status
00h successful
01h failed
BX = bytes per scan line
CX = number of pixels per scan line
DX = maximum number of scan lines
Notes: if the desired width is not achievable, the next larger width will be
set
the scan line may be wider than the visible area of the screen
this function is valid in text modes, provided that values are
multiplied by the character cell width/height
SeeAlso: AX=4F01h,AX=4F05h,AX=4F07h
----------104F07BH00-------------------------
INT 10 - VESA SuperVGA BIOS v1.1 - GET/SET DISPLAY START
AX = 4F07h
BH = 00h (reserved)
BL = 00h set display start
CX = leftmost displayed pixel in scan line
DX = first displayed scan line
= 01h get display start
Return: BH = 00h
CX = leftmost displayed pixel in scan line
DX = first displayed scan line
Return: AL = 4Fh if function supported
AH = status
00h successful
01h failed
Note: this function is valid in text modes, provided that values are
multiplied by the character cell width/height
SeeAlso: AX=4F01h,AX=4F05h,AX=4F06h
----------104F08-----------------------------
INT 10 - VESA SuperVGA BIOS v1.2+ - GET/SET DAC PALETTE CONTROL
AX = 4F08h
BL = function
00h set DAC palette width
BH = desired number of bits per primary color
01h get DAC palette width
Return: AL = 4Fh if function supported
AH = status
BH = current number of bits per primary (06h = standard VGA)
----------104FFF-----------------------------
INT 10 - VESA SuperVGA BIOS - Everex - TURN VESA ON/OFF
AX = 4FFFh
DL = new state (00h off, 01h on)
Return: AX = 0000h if successful
----------1050-------------------------------
INT 10 - SCROLOCK.COM - INSTALLATION CHECK
AH = 50h
Return: BX = 1954h if installed
AL = 00 if inactive, nonzero if active
Program: SCROLOCK is a utility supplied with System Enhancement Associates' ARC
SeeAlso: AH=51h
----------105000-----------------------------
INT 10 - VIDEO - AX PC - SET SCREEN COUNTRY CODE
AX = 5000h
BX = country code
0001h USA (English), 0051h Japan
Return: AL = status
00h successful
01h bad country code
02h other error
SeeAlso: AX=5001h,INT 16/AX=5000h
----------105001-----------------------------
INT 10 - VIDEO - AX PC - GET SCREEN COUNTRY CODE
AX = 5001h
Return: AL = status
00h successful
BX = country code
02h error
SeeAlso: AH=00h,AX=5000h,INT 16/AX=5001h,INT 21/AH=38h
----------105049-----------------------------
INT 10 - VIDEO - SCREENR v1.55+ - API
AX = 5049h ('PI')
BX = function
0000h installation check
0001h lock mode
0002h unlock mode
0003h lock palette
0004h unlock palette
Return: AX = 0000h if installed
BX = TSR version (BH=major,BL=minor)
CL = mode locking status
00h mode not locked
01h mode locked : INT 10/AH=00h disabled
CH = palette locking status
00h palette not locked
01h palette locked, the following functions are disabled:
AX=1000h, AX=1001h, AX=1002h, AX=1010h, AX=1012h
Program: SCREENR is a TSR supplied with Patrick Ibbetson's SCREEN display
utility.
----------1051-------------------------------
INT 10 - SCROLOCK.COM - ENABLE/DISABLE
AH = 51h
AL = state
00h disable
nonzero enable
Program: SCROLOCK is a utility supplied with System Enhancement Associates' ARC
SeeAlso: AH=50h"SCROLOCK"
----------105100-----------------------------
INT 10 - VIDEO - AX PC - REGISTER EXTERNAL CHARACTER
AX = 5100h
BH = character width in bits (10h)
BL = character height (10h)
DX = character code (DH = F0h-F3h, DL=40h-7Eh,80h-FCh)
ES:BP -> character bitmap
Return: AL = status (00h successful, 01h failed)
SeeAlso: AX=5101h,INT 1F
----------105101-----------------------------
INT 10 - VIDEO - AX PC - READ CHARACTER
AX = 5101h
BH = character width in bits
BL = character height
DX = character code (DH = 00h if 8-bit character)
ES:BP -> buffer for character bitmap
Return: AL = status (00h successful, 01h failed)
SeeAlso: AH=09h,AX=5100h
----------105200-----------------------------
INT 10 - VIDEO - AX PC - SET VIRTUAL TEXT RAM BUFFER
AX = 5200h
BX = segment of buffer
SeeAlso: AX=5201h
----------105201-----------------------------
INT 10 - VIDEO - AX PC - GET VIRTUAL TEXT RAM BUFFER
AX = 5201h
Return: BX = segment of buffer or 0000h if failed
SeeAlso: AX=8300h,AH=FEh
----------1053-------------------------------
INT 10 - Show Partner F/X v3.6 - START PRESENTATION
AH = 53h
DS:DX -> ASCIZ name of presentation file (no path, extension forced to
.PR2)
Return: ???
SeeAlso: AH=55h
----------1055-------------------------------
INT 10 - Show Partner F/X v3.6 - UNINSTALL
AH = 55h
Return: FXSHOW.EXE removed from memory
SeeAlso: AH=53h
----------105555-----------------------------
INT 10 - VIDEO - ATI EGA/VGA Wonder Super Switch - INSTALLATION CHECK
AX = 5555h
Return: AX = AAAAh if installed
BX:CX -> ??? routine in SMS.COM resident portion
-> data area in VCONFIG
Program: Super Switch (SMS.COM) is a video mode switch program supplied with
ATI EGA Wonder. It also maps video mode 08h to 27h or 23h.
SeeAlso: INT 10/AH=00h,INT 2F/AX=6400h
Format of data area:
Offset Size Description
00h DWORD original INT 09 vector
04h DWORD original INT 10 vector
08h DWORD original INT 1C vector
0Ch WORD screen saver state, 0=off, 1=on
0Eh WORD blanking interval in clock ticks
----------106A00BX0000-----------------------
INT 10 - Direct Graphics Interface Standard (DGIS) - INQUIRE AVAILABLE DEVICES
AX = 6A00h
BX = 0000h
CX = 0000h
DX = buffer length (may be 0)
ES:DI -> buffer
Return: BX = number of bytes stored in buffer
CX = bytes required for all descriptions (0 if no DGIS)
Note: buffer contains descriptions and addresses of DGIS-compatible
display(s) and printer(s)
SeeAlso: AX=6A02h
----------106A01CX0000-----------------------
INT 10 - DGIS - REDIRECT CHARACTER OUTPUT
AX = 6A01h
CX = 0000h
ES:DI = address of device to send INT 10 output to
Return: CX = 0000h output could not be redirected
else INT 10h output now routed to requested display
SeeAlso: AX=6A02h
----------106A02-----------------------------
INT 10 - DGIS - INQUIRE INT 10 OUTPUT DEVICE
AX = 6A02h
ES:DI = 0000h:0000h
Return: ES:DI = 0000h:0000h if current display is non-DGIS
else address of the current DGIS INT 10 display
SeeAlso: AX=6A00h,AX=6A01h
----------106E00------------------------------------
INT 10 - Paradise VGA internal - GET ???
AX = 6E00h
Return: AH = ??? (depends on serial number)
AL = ???
BX = ???
CL = ???
CH = ???
DX = ???
SeeAlso: AX=6E04,AX=6E05
----------106E04-------------------------------------
INT 10 - Paradise VGA internal - GET SCREEN SIZE AND ???
AX = 6E04h
Return: BX = screen width (columns)
CX = screen height (lines)
AH = ??? (05h or FFh)
AL = ??? (04h or video mode)
SeeAlso: AX=6E00,AX=6E05
----------106E05-------------------------------------
INT 10 - Paradise VGA internal - SET MODE
AX = 6E05h
BL = mode
Note: like AH=0, AL=BL.
SeeAlso: AH=00,AX=6E00,AX=6E04,AX=6F05h
----------106F00-----------------------------
INT 10 - VIDEO - Video7 VGA,VEGA VGA,HP Ext BIOS - INSTALLATION CHECK
AX = 6F00h
BX = 0000h
Return: BX = 5637h ('V7') indicates Video7 VGA/VEGA VGA extensions are present
BX = 4850h ('HP') indicates HP Extended BIOS video functions present
SeeAlso: AX=6F01h,AX=6F02h,AX=6F03h,AX=6F04h,AX=6F05h
----------106F01-----------------------------
INT 10 - VIDEO - Video7 VGA,VEGA VGA,HP Ext BIOS - GET MONITOR INFO
AX = 6F01h
Return: AL = monitor type code (HP,VEGA VGA only) (see below)
AH = status register information
bit 0 = display enable
0 = display enabled
1 = vertical or horizontal retrace in progress
bit 1 = light pen flip flop set
bit 2 = light pen switch activated
bit 3 = vertical sync
bit 4 = monitor resolution
0 = high resolution (>200 lines)
1 = low resolution (<=200 lines)
bit 5 = display type
0 = color
1 = monochrome
bits6,7= diagnostic bits
CL = current value of Extended Control register (HP Ext BIOS, and only
if AL=41h)
Note: bits 0-3 are the same as the EGA/VGA status register bits 0-3
Values for monitor type code (HP Extended BIOS):
00h non-HP card with ROM and possibly its own INT 10h driver
41h MultiMode video display adapter
42h-44h reserved
45h industry standard monochrome display adapter
46h industry standard color display adapter
51h reserved
---------------------------------------------
INT 10 - VIDEO - HP Vetra EXTENDED BIOS - SET MONITOR INFO
AX = 6F02h
BL = new value for extende dcontrol register
bit 0: screen resolution (0 = 200 lines, 1 = 400 lines)
bit 1: underline enable (if set, 'blue' bit of fg color = underl)
bit 2: font (0 = Standard-8, 1 = HP-Roman-8)
bit 3: memory disabled for CPU access
bit 4: allow access to full 32K memory instead of wrapping at 16K
bit 5: select second 16K page instead of first
bits 6,7 unused
Return: nothing
Notes: this function is only valid when an HP MultiMode Video Display Adapter
is installed
the Extended Control register is at I/O address 3DDh
SeeAlso: AX=6F01h,AX=6F03h
---------------------------------------------
INT 10 - VIDEO - HP Vectra EXTENDED BIOS - MODIFY MONITOR INFO
AX = 6F03h
BH = exclude mask (set bits are not modified)
BL = new values for bits indicated by BH (see AX=6F02h)
Return: nothing
Note: this function is only valid when an HP MultiMode Video Display Adapter
is installed
SeeAlso: AX=6F01h,AX=6F02h
----------106F04-----------------------------
INT 10 - VIDEO - Video7 VGA,VEGA VGA,HP Vectra - GET MODE AND SCREEN RESOLUTION
AX = 6F04h
Return: AL = current video mode (see AX=6F05h)
BX = horizontal columns (text) or pixels (graphics)
CX = vertical columns (text) or pixels (graphics)
SeeAlso: AX=6F05h
----------106F05-----------------------------
INT 10 - VIDEO - Video7 VGA, VEGA EXTENDED EGA/VGA - SET VIDEO MODE
AX = 6F05h
BL = mode (see below)
Notes: also supported by the HP Vectra Extended BIOS
on the HP Vectra, this function rather than AH=00h must be used to
return to an IBM-standard mode after setting an HP-specified mode
from 08h to 0Fh.
SeeAlso: AH=00h,AX=0070h,AX=007Eh,AX=6F04h
Values for video mode:
text/ text pixel pixel colors disp scrn system
grph resol box resoltn page addr
00h-13h = standard IBM modes (see AH=00h)
08h = T 80x27 mono HP MultiMode Video
09h = T 80x27 HP MultiMode Video
0Ah = T 40x27 mono HP MultiMode Video
0Bh = T 40x27 HP MultiMode Video
0Ch = Reserved HP MultiMode Video
0Dh = G 640x400 HP MultiMode Video
0Eh = G 320x400 HP MultiMode Video
0Fh = G 320x400 HP MultiMode Video
40h = T 80x43 8x8 Video7/VEGA VGA
41h = T 132x25 8x14 Video7/VEGA VGA
42h = T 132x43 8x8 Video7/VEGA VGA
43h = T 80x60 8x8 Video7/VEGA VGA
44h = T 100x60 8x8 Video7/VEGA VGA
45h = T 132x28 8x8 Video7/VEGA VGA
60h = G 752x410 16 Video7 VGA, VEGA VGA
61h = G 720x540 16 Video7 VGA, VEGA VGA
= G 720x540 16 Northgate, Headland 1024i
62h = G 800x600 16 Video7 VGA, VEGA Ext EGA
= G 800x600 16 Headland 1024i
63h = G 1024x768 2 Video7 VGA
64h = G 1024x768 4 Video7 VGA
65h = G 1024x768 16 Video7 VGA, VEGA Ext EGA
= G 1024x768 16 Headland 1024i
66h = G 640x400 256 Video7 VGA, VEGA Ext VGA
= G 640x400 256 Northgate, Headland 1024i
67h = G 640x480 256 Video7 VGA, VEGA Ext VGA
= G 640x480 256 Headland 1024i
68h = G 720x540 256 Video7 VGA, VEGA Ext VGA
= G 720x540 256 Headland 1024i
69h = G 800x600 256 Video7 VGA, VEGA Ext VGA
= G 800x600 256 Headland 1024i
70h = G 752x410 16gray Video7 VGA, VEGA VGA
71h = G 720x540 16gray Video7 VGA, VEGA VGA
72h = G 800x600 16gray Video7 VGA
73h = G 1024x768 2gray Video7 VGA
74h = G 1024x768 4gray Video7 VGA
75h = G 1024x768 16gray Video7 VGA
76h = G 640x400 256gray Video7 VGA
77h = G 640x480 256gray Video7 VGA
78h = G 720x540 256gray Video7 VGA
79h = G 800x600 256gray (future)
SeeAlso: AH=00h,AX=0070h,AX=007Eh,AX=6F04h
----------106F06-----------------------------
INT 10 - VIDEO - Video7 VGA,VEGA VGA - SELECT AUTOSWITCH MODE
AX = 6F06h
BL = Autoswitch mode select
00h select EGA/VGA-only modes
01h select Autoswitched VGA/EGA/CGA/MGA modes
02h select 'bootup' CGA/MGA modes
BH = enable/disable (00h enable, 01h = disable selection)
----------106F07-----------------------------
INT 10 - VIDEO - Video7 VGA,VEGA VGA - GET VIDEO MEMORY CONFIGURATION
AX = 6F07h
Return: AL = 6Fh
AH = bits 0-6 = number of 256K blocks of video memory
bit 7 = DRAM/VRAM (0: DRAM, 1: VRAM)
BH = chip revision (SR8F) (S/C Chip in VEGA VGA)
BL = chip revision (SR8E) (G/A Chip in VEGA VGA)
CX = 0000h
SeeAlso: AH=12h/BL=10h
----------1070-------------------------------
INT 10 - VIDEO - TANDY 2000 only - GET ADDRESS OF VIDEO RAM
AH = 70h
Return: AX:BX -> WORD containing green plane's offset
AX:CX -> WORD containing green plane's segment
AX:DX -> WORD containing segment of red (offset 0) and blue (offset
4000) planes
SeeAlso: AH=71h
----------107000BX0000-----------------------
INT 10 - Everex Extended Video BIOS - RETURN EMULATION STATUS
AX = 7000h
BX = 0000h
Return: AL = 70h if Trident-based Everex card
CL = monitor type
00h mono
01h CGA
02h EGA
03h digital multifrequency
04h IBM PS/2
05h IBM 8514
06h SuperVGA
07h analog multifrequency
08h super multifrequency
CH = feature bits
bits 7,6: 00 = 256K memory
01 = 512K memory
10 = 1024K
11 = 2048K memory
bit 5: special oscillator present
bit 4: VGA protect enabled
bit 0: 6845 emulation
DX = video board info
bits 4-15: board ID model
bits 0-3: board ID revision
DI = BCD BIOS version number
Note: board models for Trident-based Everex cards:
236h Ultragraphics II
620h Vision VGA
673h EVGA
678h Viewpoint
----------107000BX0004-----------------------
INT 10 - Everex Extended Video BIOS - GET PAGING FUNCTION POINTER FOR CURR MODE
AX = 7000h
BX = 0004h
Return: ES:DI -> FAR paging function (call with DL = page to set)
Note: the word preceding ES:DI is the length of the function in bytes, and
the last byte of the function is a FAR return instruction.
SeeAlso: AX=4F05h,AX=7000h/BX=0000h,AX=7000h/BX=0005h
----------107000BX0005-----------------------
INT 10 - Everex Extended Video BIOS - GET SUPPORTED MODE INFO
AX = 7000h
BX = 0005h
CL = maximum number of modes to get info for
CH = mode type to get info for (see below)
DL = monitor type to get info for
ES:DI -> buffer for mode info (see below)
Return: CL = total number of modes fitting criteria
CH = size of each info record
SeeAlso: AX=7000h/BX=0000h,AX=7000h/BX=0004h
Values for mode type:
00h all modes
01h monochrome text modes
02h color text modes
03h four-color CGA graphics modes
04h two-color CGA graphics modes
05h 16-color graphics modes
06h 256-color graphics modes
Format of mode information record:
Offset Size Description
00h BYTE mode number (bit 7 set if extended mode)
01h BYTE mode type (see above)
02h BYTE info bits
bits 7,6 reserved
5 monochrome mode
4 interlaced display
3 requires special oscillator
2,1 memory required
00 = 256K
01 = 512K
10 = 1024K
11 = 2048K
0 reserved
03h BYTE font height
04h BYTE text columns on screen
05h BYTE text rows on screen
06h WORD number of scan lines
08h BYTE color information
bits 7-4 reserved
3-0 bits per pixel
----------1071-------------------------------
INT 10 - VIDEO - TANDY 2000 only - GET ADDRESS OF INCRAM
AH = 71h
Return: AX:BX -> WORD containing segment address of INCRAM
AX:CX -> WORD containing offset of INCRAM
SeeAlso: AH=70h
----------1072-------------------------------
INT 10 - VIDEO - TANDY 2000 only - SCROLL RIGHT PART OR ALL OF SCREEN
AH = 72h
AL = number of columns to shift scroll area, 00h to clear entire area
BH = new attributes for blanked columns at left
CH,CL = row, column of upper left corner of scroll area
DH,DL = row, column of lower right corner of scroll area
SeeAlso: AH=06h,AH=07h,AH=73h,INT 15/AH=12h/BH=05h
----------1073------------------------------
INT 10 - VIDEO - TANDY 2000 only - SCROLL LEFT PART OR ALL OF SCREEN
AH = 73h
AL = number of columns to shift scroll area, 00h to clear entire area
BH = new attributes for blanked columns at right
CH,CL = row, column of upper left corner of scroll area
DH,DL = row, column of lower right corner of scroll area
SeeAlso: AH=06h,AH=07h,AH=72h,INT 15/AH=12h/BH=05h
----------107F00-----------------------------
INT 10 - SOLLEX SuperVGA - GET EXTENSIONS INFO
AX = 7F00h
Return: AL != 7Fh if not supported
AL = 7Fh if supported
AH = status
00h successful
ES:DI -> info structure (see below)
01h failed
SeeAlso: AX=4F00h
Format of info structure:
Offset Size Description
00h DWORD pointer to VESA function dispatch table
04h DWORD pointer to SOLLEX function dispatch table
08h DWORD pointer to VESA SuperVGA info (see AX=4F00h)
0Ch DWORD pointer to mode info structure table, consisting of
alternating ResInfo (see below) and VESA mode information
(see AX=4F01h) blocks, terminated with an FFFFh word
10h DWORD pointer to font info structure table (see below)
14h WORD high resolution crystal frequency in Hz (0000h = not present)
16h DWORD pointer to ASCIZ ID string
1Ah DWORD pointer to timeout reset table
array of bytes, each a multiple of the minimum time increment
1Eh WORD minimum time increment in timer ticks
20h BYTE inverse options supported
bit 0: inverse supported
bits 1-7: reserved
21h BYTE normal color value
22h BYTE inverse color value
23h WORD port to be accessed for normal/inverse settings
25h WORD type of interface chip (currently undefined)
27h WORD program operational mode
bits 1-0: 00 no preference
01 terse (minimum detail in program messages)
10 verbose
11 use menus if supported, verbose mode otherwise
bits 7-2: reserved
29h WORD SOLLEX specification version
2Bh WORD version of VESA/SOLLEX implementation
2Dh DWORD offset to relocatable portion of SOLLEX extensions (for CONFIG)
2Eh DWORD offset to unused section of the extensions ROM
31h 16 BYTEs reserved
Note: all DWORD pointers initially require segment fixups; if the segment
is 0000h, it should be changed to the returned ES, otherwise it
may be assumed to be correct
Format of ResInfo:
Offset Size Description
00h WORD 16-bit mode number
02h WORD adapter type (00h VGA, 01h EGA, 02h CGA, 03h MDA)
04h WORD display info (see AX=7F01h/BL=01h)
06h DWORD pointer to video parameter table
0Ah BYTE replacement entry in master Video Parameter
0Bh BYTE mode requested for mode set by BIOS
0Ch DWORD pointer to LoadReg table
10h BYTE index into table of clock values (see below)
Format of font info table [array] entry:
Offset Size Description
00h BYTE required font height
01h BYTE parameter to load text mode font
02h BYTE parameter to load graphics mode font
Values for clock value index:
00h 25 MHz
01h 28 MHz
02h PCLK
03h 31.5 MHz (VESA 640x480)
04h reserved
05h 16 MHz (EGA)
06h PCLK
07h 24 MHz (EGA)
08h 25 MHz
09h 28 MHz
0Ah 36 MHz
0Bh 45 MHz (for 1024x768)
0Ch 80 MHz
0Dh 40 MHz
0Eh 65 MHz
0Fh 1 MHz (for powerdown)
----------107F01BL00-------------------------
INT 10 - SOLLEX SuperVGA - ADAPTER CONTROL - SET ADAPTER
AX = 7F01h
BL = 00h
CX = adapter request
bits 1-0: adapter type (00 VGA, 01 EGA, 10 CGA, 11 MDA)
bit 2: reserved
bits 4-3: change displays (00 none, 01 analog 10 digital 11 panel)
bits 6-5: desired monitor sense (01 color, 10 mono, 11=8514)
bit 7: lock override
bit 8: alternate adapter mode
bits 15-9: reserved
Return: AL != 7Fh if not supported
AL = 7Fh if supported
AH = status
00h successful
01h failed
Note: initializes video hardware to a particular standard
SeeAlso: AX=7F00h,AX=7F01h/BL=01h,AX=7F01h/BL=02h
----------107F01BL01-------------------------
INT 10 - SOLLEX SuperVGA - ADAPTER CONTROL - GET ADAPTER
AX = 7F01h
BL = 01h
Return: AL != 7Fh if not supported
AL = 7Fh if supported
AH = status
00h successful
01h failed
BX = adapter type (see AX=7F01h/BL=00h)
DX = display type
bits 1-0: monitor sense (00 none, 01 color, 10 mono, 11=8514)
bit 2: multi-frequency analog monitor active
bit 3: LCD panel active
bit 4: plasma/electroluminescent panel active
bit 5: PS/2-type monitor active
bit 6: multi-frequency digital monitor active
bit 7: Enhanced Color Display monitor active
bit 8: alternate display active
bits 15-9: reserved
SeeAlso: AX=7F00h,AX=7F01h/BL=00h,AX=7F01h/BL=02h
----------107F01BL02-------------------------
INT 10 - SOLLEX SuperVGA - ADAPTER CONTROL - DETERMINE ADAPTER SUPPORT
AX = 7F01h
BL = 02h
CX = adapter request (see AX=7F01h/BL=00h)
Return: AL != 7Fh if not supported
AL = 7Fh if supported
AH = status
00h requested setting can successfully be made
01h requested setting not available in this configuration
SeeAlso: AX=7F00h,AX=7F01h/BL=00h
----------107F02BL00-------------------------
INT 10 - SOLLEX SuperVGA - DISPLAY OUTPUT CONTROL - SET DISPLAY OUTPUT
AX = 7F02h
BL = 00h
CX = display output setting
bit 0: CRTC control in bits 2,1 valid
bit 1: enable digital output
bit 2: enable analog output
bit 3: panel control in bits 5,4 valid
bit 4: enable LCD output
bit 5: enable plasma/EL output
bit 6: inverse control in bit 7 valid
bit 7: 0=normal, 1=inverse
bits 15-8 reserved
Return: AL != 7Fh if not supported
AL = 7Fh if supported
AH = status
00h successful
01h failed
SeeAlso: AX=7F00h,AX=7F02h/BL=00h
----------107F02BL01-------------------------
INT 10 - SOLLEX SuperVGA - DISPLAY OUTPUT CONTROL - GET DISPLAY OUTPUT
AX = 7F02h
BL = 01h
Return: AL != 7Fh if not supported
AL = 7Fh if supported
AH = status
00h successful
BX = display output setting (see AX=7F02h/BL=00h)
CX = displays attached
bit 0: PS/2 display on analog output
bit 1: multi-frequency monitor on analog output
bit 2: LCD panel attached
bit 3: plasma/electroluminescent panel attached
bit 4: multi-frequency monitor on digital output
bit 5: Enhanced Color Display attached to digital outpt
bit 6: alternate display
bits 15-7: reserved
01h failed
SeeAlso: AX=7F00h,AX=7F02h/BL=00h
----------107F03BL00-------------------------
INT 10 - SOLLEX SuperVGA - VIDEO SUPPORT CONTROL - GET SUPPORT INFO
AX = 7F03h
BL = 00h
CX = support type
0000h VGA, 0001h EGA, 0002h CGA, 0003h MDA, 0004h extensions,
0005h-0012h reserved for SOLLEX, 0013h Hercules,
0014h-001Fh reserved for SOLLEX, 0020h-00FFh reserved for OEM
Return: AL != 7Fh if not supported
AL = 7Fh if supported
AH = status
00h successful
CX = size of video support code
DX = segment of physical video support (0000h if no ROM)
ES = segment of active video support
ES:DI -> information block (DI = 0000h if none available)
01h failed
SeeAlso: AX=7F03h/BL=01h
----------107F03BL01-------------------------
INT 10 - SOLLEX SuperVGA - VIDEO SUPPORT CONTROL - INITIALIZE VIDEO SUPPORT
AX = 7F03h
BL = 01h
CX = support request
ES = segment of support code
Return: AL != 7Fh if not supported
AL = 7Fh if supported
AH = status
00h successful
01h failed
Note: initializes the indicated video support by calling ES:0003h; this
function may be used to switch the active video support back to
ROM after AX=7F03h/BL=02h
SeeAlso: AX=7F03h/BL=00h
----------107F03BL02-------------------------
INT 10 - SOLLEX SuperVGA - VIDEO SUPPORT CONTROL - GO RAM RESIDENT
AX = 7F03h
BL = 02h
CX = support request
ES = destination segment
Return: AL != 7Fh if not supported
AL = 7Fh if supported
AH = status
00h successful
01h failed
SeeAlso: AX=7F00h,AX=7F03h/BL=01h
----------107F04BL00-------------------------
INT 10 - SOLLEX SuperVGA - POWER CONTROL - SET POWER STATE
AX = 7F04h
BL = 00h
CX = new power state
Return: AL != 7Fh if not supported
AL = 7Fh if supported
AH = status
00h successful
01h failed
Note: higher values progressively reduce the operations available on the
video adapter while yielding increasing power savings
SeeAlso: AX=7F00h,AX=7F04h/BL=01h
----------107F04BL01-------------------------
INT 10 - SOLLEX SuperVGA - POWER CONTROL - GET POWER STATE
AX = 7F04h
BL = 01h
Return: AL != 7Fh if not supported
AL = 7Fh if supported
AH = status
00h successful
CX = current power state
DX = maximum state
01h failed
SeeAlso: AX=7F00h,AX=7F04h/BL=00h
----------107F04BL02-------------------------
INT 10 - SOLLEX SuperVGA - POWER CONTROL - SET TIMEOUT RESET
AX = 7F04h
BL = 02h
CX = timeout reset
Return: AL != 7Fh if not supported
AL = 7Fh if supported
AH = status
00h successful
01h failed
SeeAlso: AX=7F00h,AX=7F04h/BL=03h
----------107F04BL03-------------------------
INT 10 - SOLLEX SuperVGA - POWER CONTROL - GET TIMEOUT RESET
AX = 7F04h
BL = 03h
Return: AL != 7Fh if not supported
AL = 7Fh if supported
AH = status
00h successful
BX = time increment
CX = current timeout reset
DX = maximum timeout reset
ES:DI -> timeout reset table (array of bytes)
01h failed
Note: the timeout period is computed as (BYTE ES:[DI+CX]) * BX timer ticks
SeeAlso: AX=7F00h,AX=7F04h/BL=02h
----------107F05-----------------------------
INT 10 - SOLLEX SuperVGA - LOAD REGISTER
AX = 7F05h
ES:DI -> register value table (see below)
Return: AL != 7Fh if not supported
AL = 7Fh if supported
AH = status
00h successful
01h failed
SeeAlso: AH=F1h,AH=F3h,AH=F5h
Format of register value table:
Offset Size Description
00h WORD base I/O register (FFFFh = end of list)
02h 2N BYTEs pairs of values to be written to the base I/O register as an
index value and the following register as a data byte
2N+2 WORD FFFFh (end of data list)
... (repeats until FFFFh base address)
----------107F06-----------------------------
INT 10 - SOLLEX SuperVGA - MULTIPLE FONT CONTROL
AX = 7F06h
BL = subfunction
00h set multiple font state
CX = new state (00h off, 01h on)
01h get multiple font state
Return: BL = current state (00h off, 01h on)
Return: AL != 7Fh if not supported
AL = 7Fh if supported
AH = status
00h successful
01h failed
SeeAlso: AH=11h
----------107F07-----------------------------
INT 10 - SOLLEX SuperVGA - FILL VIDEO RAM
AX = 7F07h
BL = how much to fill
00h regen size
01h all video memory
CX = pattern to write (normally 0720h for text modes and 0000h for gr)
Return: AL != 7Fh if not supported
AL = 7Fh if supported
AH = status
00h successful
01h failed
SeeAlso: AH=06h
----------1080--DX4456-----------------------
INT 10 U - VIDEO - DESQview 2.0x only - internal - SET ??? HANDLER
AH = 80h
DX = 4456h ('DV')
ES:DI -> FAR subroutine to be called on ???
Return: DS = segment of DESQview data structure for video buffer
Note: this function is probably meant for internal use only, due to the magic
value required in DX
the subroutine seems to be called when the DESQview menu is accessed;
on entry, AL = 03h or 04h
----------1081--DX4456-----------------------
INT 10 U - VIDEO - DESQview 2.0x only - internal - GET ???
AH = 81h
DX = 4456h ('DV')
Return: ES = segment of DESQview data structure for video buffer
BYTE ES:[0] = current window number in DV 2.0x
Note: this function is probably meant for internal use only, due to the magic
value required in DX
SeeAlso: AH=82h
----------1082--DX4456-----------------------
INT 10 U - VIDEO - DESQview 2.0x only - internal - GET CURRENT WINDOW INFO
AH = 82h
DX = 4456h ('DV')
Return: DS = segment in DESQview for data structure
in DV 2.00,
BYTE DS:[0] = window number
WORD DS:[1] = segment of other data structure
WORD DS:[3] = segment of window's object handle
ES = segment of DESQview data structure for video buffer
AL = current window number
AH = ???
BL = direct screen writes
00h program does not do direct writes
01h program does direct writes, so shadow buffer not usable
BH = ???
CL = current video mode
CH = ???
Note: this function is probably meant for internal use only, due to the magic
value required in DX
SeeAlso: AH=81h
----------108200-----------------------------
INT 10 - VIDEO - AX PC - GET/SET SCROLL MODE
AX = 8200h
BL = new scroll mode or FFh to get current mode
00h dynamic, 01h software
Return: AL = scroll mode (current mode if BL=FFh, previous mode otherwise)
SeeAlso: AH=06h,AH=07h
----------108300-----------------------------
INT 10 - VIDEO - AX PC - GET VIDEO RAM ADDRESS
AX = 8300h
Return: AX = offset of video RAM
ES:BX -> virtual text RAM buffer
SeeAlso: AX=5201h
----------108B-------------------------------
INT 10 - Alloy MW386 - FORCE WORKSTATION SCREEN UPDATE
AH = 8Bh
SeeAlso: AH=92h,AH=93h
----------1090-------------------------------
INT 10 - Alloy MW386 - GET PHYSICAL WORKSTATION DISPLAY MODE
AH = 90h
Return: AL = current video mode (see AH=00h)
SeeAlso: AH=91h
----------1091-------------------------------
INT 10 - Alloy MW386 - GET PHYSICAL WORKSTATION ADAPTER TYPE
AH = 91h
Return: AL = video adapter type
00h monochrome
01h Hercules monochrome graphics
02h CGA
03h EGA
04h VGA
80h monochrome text terminal
81h Hercules graphics terminal
82h color graphics terminal
Note: types less than 80h do not imply that the current user is on the host
SeeAlso: AH=90h
----------1092-------------------------------
INT 10 - Alloy MW386 - INHIBIT WORKSTATION SCREEN UPDATES
AH = 92h
Note: the terminal will be updated even when screen updates are inhibited if
TTY output is used
SeeAlso: AH=8Bh
----------1093-------------------------------
INT 10 - Alloy MW386 - REDRAW SCREEN
AH = 93h
SeeAlso: AH=8Bh
----------10BF00-----------------------------
INT 10 - VIDEO - Compaq Portable Extensions - SELECT EXTERNAL MONITOR
AX = BF00h
Note: all registers preserved and the internal monitor is blanked
the external monitor becomes the active monitor
SeeAlso: AX=BF01h
----------10BF01-----------------------------
INT 10 - VIDEO - Compaq Portable Extensions - SELECT INTERNAL MONITOR
AX = BF01h
Note: all registers preserved and the external monitor is blanked
the internal monitor becomes the active monitor
SeeAlso: AX=BF00h
----------10BF02-----------------------------
INT 10 - VIDEO - Compaq Portable Extensions - SET MASTER MODE OF CURRENT CTRLR
AX = BF02h
BH = master mode
04h CGA
05h EGA
07h MDA
SeeAlso: AX=BF03h
----------10BF03BX0000-----------------------
INT 10 - VIDEO - Compaq Portable/Systempro Extensions - GET ENVIRONMENT
AX = BF03h
BX = 0000h
Return: BH = active monitor
00h = external
01h = internal
BL = master mode
00h = switchable VDU not present
04h = CGA
05h = EGA
07h = MDA
08h = switchable LCD controller present
CH = 00h (reserved)
CL = switchable VDU mode supported
bit 0 = CGA supported
bits 1,2 = reserved (1)
bit 3 = MDA supported
bits 4-7 = reserved (1)
DH = internal monitor type
00h = none
01h = Dual-mode monitor
02h = 5153 RGB monitor
03h = Compaq Color monitor
04h = 640x400 flat panel
07h = LCD VGA
DL = external monitor type
00h = none
01h = dual-mode monitor
02h = 5153 RGB monitor
03h = Compaq Color monitor
04h = 640x400 flat panel
05h = VGC monochrome
06h = VGC color
SeeAlso: AH=1Ah,AX=BF00h,AX=BF01h,AX=BF02h
----------10BF04-----------------------------
INT 10 - VIDEO - Compaq Portable Extensions - SET MODE SWITCH DELAY
AX = BF04h
BH = new state of delay
00h enabled
01h disabled
SeeAlso: AX=BF05h
----------10BF05-----------------------------
INT 10 - VIDEO - Compaq Systempro Extensions - ENABLE/DISABLE DISPLAY
AX = BF05h
BH = new state of video
00h off
01h on
SeeAlso: AX=BF04h
----------10BF06-----------------------------
INT 10 - VIDEO - Compaq SLT/286 - READ GRAY SCALE TABLE
AX = BF06h
CL = address to be read from gray scale table
Return: AL = bit 3-0 - Value read from gray scale table
CL = address to be read from gray scale table
SeeAlso: AH=12h/BL=33h,AX=BF07h
----------10BF07-----------------------------
INT 10 - VIDEO - Compaq SLT/286 - WRITE GRAY SCALE TABLE
AX = BF07h
CH = value to write to gray scale table
CL = address to be written to gray scale table
SeeAlso: AX=BF06h
----------10BF08-----------------------------
INT 10 - VIDEO - Compaq SLT/286 - WRITE COLOR MIX REGISTERS
AX = BF08h
CH = bits 7-4 - Green weight
bits 3-0 - Blue weight
CL = bits 7-4 - unused
bits 3-0 - Red weight
----------10CC00SI0000-----------------------
INT 10 - VIDEO - UltraVision - GET STATUS (INSTALLATION CHECK)
AX = CC00h
SI = 0000h (if checking version)
Return: CX = ABCDh
AL = Ultravision extensions
00h enabled
FFh disabled
AH = card designator
BX:00F0h -> palette values (for compatibility with NEWFONT)
DX = support for high resolution modes
00h not active
01h active
SI = UltraVision version number (v1.2+), high byte=major,low byte=minor
= unchanged for versions <1.2
SeeAlso: AX=CC01h,AX=CC02h
----------10CC01-----------------------------
INT 10 - VIDEO - UltraVision - DISABLE EXTENSIONS
AX = CC01h
Notes: subsequent BIOS calls will be passed through to previous handler
should be followed immediately by mode set to restore normal EGA/VGA
state
SeeAlso: AX=CC02h
----------10CC02-----------------------------
INT 10 - VIDEO - UltraVision - ENABLE EXTENSIONS
AX = CC02h
Note: should be followed immediately by mode set to restore previous
UltraVision state
SeeAlso: AX=CC01h
----------10CD00-----------------------------
INT 10 - VIDEO - UltraVision - LOAD ULTRAVISION PALETTE (color EGA,VGA)
AX = CD00h
CL = palette table number (01h-07h for v1.x, 01h-0Fh for v2+)
DS:DX -> 16-byte palette register list (colors for registers 00h-0Fh)
Notes: if palette locking is in effect for the current mode, the new colors
will be displayed immediately; otherwise, the system reverts to the
default palette
palette table 0 is reserved for the default palette and cannot be set
UltraVision always sets the border color to black
SeeAlso: AX=CD01h,AX=CD02h
----------10CD01-----------------------------
INT 10 - VIDEO - UltraVision - SET PALETTE LOCKING STATUS (color EGA,VGA)
AX = CD01h
CL = palette locking value
00h none
01h text modes only (02h,03h)
FFh all modes (all standard color text and graphics modes)
Notes: intended for video modes with 16 or fewer colors
SeeAlso: AX=1000h,AX=1002h,AX=CD00h,AX=CD03h
----------10CD02-----------------------------
INT 10 - VIDEO - UltraVision - GET ULTRAVISION PALETTE (EGA,VGA)
AX = CD02h
Return: CL = palette table number
DS:DX -> 17-byte palette register list
DS:SI -> current font names table (see below)
Note: only the font names are valid on monochrome EGA systems
SeeAlso: AX=1009h,AX=CD00h
Format of palette register list:
Offset Size Description
00h 16 BYTEs colors for palette registers 00h through 0Fh
10h BYTE border color
Format of current font names table (v2+):
Offset Size standard EGA HiRes EGA VGA
00h 8 BYTEs N/A F19 font F20 font
08h 8 BYTEs F14 font F14 font F14 font
10h 8 BYTEs N/A F11 font F10 font
18h 8 BYTEs F8 font F8 font F8 font
Format of current font names table (v1.x):
Offset Size HiRes EGA
00h 8 BYTEs F19/F14 font
08h 8 BYTEs F11/F8 font
----------10CD03-----------------------------
INT 10 - VIDEO - UltraVision - GET PALETTE LOCKING STATUS (color EGA,VGA)
AX = CD03h
Return: CL = palette locking value
00h none
01h text modes only
FFh all modes
SeeAlso: AX=CD01h
----------10CD04-----------------------------
INT 10 - VIDEO - UltraVision - GET UltraVision TEXT MODE (EGA,VGA)
AX = CD04h
Return: AL = mode number
11h 80x25
12h 80x43, 80x50
13h 80x34, 80x36
14h 80x60, 80x63
19h 94x25
1Ah 94x43, 94x50
1Bh 94x36
1Ch 94x63
21h 108x25
22h 108x43, 108x50
23h 107x34, 108x36
24h 108x60, 108x63
31h 120x25
32h 120x43, 120x50
33h 132x25
34h 132x44, 132x50
39h 120x36
3Ah 120x63
3Bh 132x36
3Ch 132x60
SeeAlso: AH=0Fh,AX=CC00h,AH=CDh
----------10CD05-----------------------------
INT 10 - VIDEO - UltraVision - SET CURSOR TYPE (EGA,VGA)
AX = CD05h
CL = type
00h line cursor
FFh box cursor
Note: sets default cursor type for text-based programs
SeeAlso: AH=01h,AX=CD06h
----------10CD06-----------------------------
INT 10 - VIDEO - UltraVision - GET CURSOR TYPE (EGA,VGA)
AX = CD06h
Return: CL = type
00h line cursor
FFh box cursor
SeeAlso: AH=03h,AX=CD05h
----------10CD07-----------------------------
INT 10 - VIDEO - UltraVision v1.2+ - SET UNDERLINE STATUS (EGA,VGA)
AX = CD07h
CL = hardware underline status
00h off (color systems only)
01h underline below characters
02h strike through characters
BL = foreground color for normal text (FFh = current)
BH = foreground color for bright text (FFh = current)
Return: CL = hardware underline status
BL = current foreground color for normal text
BH = current foreground color for bright text
Notes: when underline or strikeout is enabled in color text modes, the
specified colors will be assigned temporarily to colors 01h and 09h,
allowing affected text to match non-underlined text. The color
remapping uses values from the current onscreen palette regardless
of the palette locking status (see AX=CD01h)
specify the standard colors (BL=01h,BH=09h) to enable underline or
strikeout without color remapping
SeeAlso: AX=CD08h
----------10CD08-----------------------------
INT 10 - VIDEO - UltraVision v1.2+ - GET UNDERLINE STATUS (EGA,VGA)
AX = CD08h
Return: CL = hardware underline status (see AX=CD07h)
BL = foreground color for normal text
BH = foreground color for bright text
Note: only CL is valid on monochrome EGA systems
SeeAlso: AX=CD07h
----------10CD10-----------------------------
INT 10 - VIDEO - UltraVision - LOAD USER FONT (EGA,VGA)
AX = CD10h
BH = bytes per character (08h,0Ah,0Bh,0Eh,13h,14h)
CX = ABCDh load 9xN alternate font (v2+)
else number of characters to load
DX = character offset into font table
DS:SI -> 8-byte ASCII font name
ES:BP -> font definitions
Return: AX = FFFFh if invalid font parameters
Notes: loads the designated characters into UltraVision's resident font area
should be followed by a video mode set to reload character generator
SeeAlso: AX=1100h
----------10CD-------------------------------
INT 10 - VIDEO - UltraVision - SET ULTRAVISION TEXT MODE (EGA,VGA)
AH = CDh
AL = text mode number (see AX=CD04h)
Return: AX = CDCDh if invalid mode
SeeAlso: AX=CD04h
----------10EF-------------------------------
INT 10 - VIDEO - MSHERC.COM - INSTALLATION CHECK???
AH = EFh
Return: DL = video adapter type
00h original Hercules
01h ??? \ one is probably Hercules Plus, the other
02h ??? / Hercules InColor
FFh non-Hercules
DH = memory mode byte
01h "half" mode
03h "full" mode
Note: MSHERC.COM is a support program for the Microsoft Quick languages which
makes their graphics libraries compatible with a Hercules card by
adding video modes 08h and 88h, and supporting text in the new
graphics modes. While in mode 08h or 88h, INT 10 supports the
Hercules card much like a CGA.
----------10F0-------------------------------
INT 10 - EGA Register Interface Library - READ ONE REGISTER
AH = F0h
BL = register number
BH = 00h
DX = group index
Pointer/data chips
00h CRT Controller (25 reg) 3B4h mono modes, 3D4h color modes
08h Sequencer (5 registers) 3C4h
10h Graphics Controller (9 registers) 3CEh
18h Attribute Controller (20 registers) 3C0h
Single registers
20h Miscellaneous Output register 3C2h
28h Feature Control register (3BAh mono modes, 3DAh color modes)
30h Graphics 1 Position register 3CCh
38h Graphics 2 Position register 3CAh
Return: BL = data
Note: the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2
compatibility box, and others
SeeAlso: AH=F1h,AH=F2h,INT 2F/AX=BC00h
----------10F1-------------------------------
INT 10 - EGA Register Interface Library - WRITE ONE REGISTER
AH = F1h
DX = group index (see AH=F0h)
if single register:
BL = value to write
otherwise
BL = register number
BH = value to write
Return: BL = data
Note: the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2
compatibility box, and others
SeeAlso: AX=7F05h,AH=F0h,AH=F3h
----------10F2-------------------------------
INT 10 - EGA Register Interface Library - READ REGISTER RANGE
AH = F2h
CH = starting register number
CL = Number of registers (>1)
DX = group index
00h CRTC (3B4h mono modes, 3D4h color modes)
08h Sequencer 3C4h
10h Graphics Controller 3CEh
18h Attribute Controller 3C0h
ES:BX -> buffer, CL bytes
Note: the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2
compatibility box, and others
SeeAlso: AH=F0h,AH=F3h
----------10F3-------------------------------
INT 10 - EGA Register Interface Library - WRITE REGISTER RANGE
AH = F3h
CH = starting register
CL = number of registers (>1)
DX = group index (see AH=F2h)
ES:BX -> buffer, CL bytes
Note: the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2
compatibility box, and others
SeeAlso: AX=7F05h,AH=F1h,AH=F2h
----------10F4-------------------------------
INT 10 - EGA Register Interface Library - READ REGISTER SET
AH = F4h
CX = number of registers to read (>1)
ES:BX -> table of records (see below)
Return: register values in table filled in
Note: the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2
compatibility box, and others
SeeAlso: AH=F0h,AH=F2h,AH=F5h
Format of entries in table of register records:
Offset Size Description
00h WORD group index
Pointer/data chips
00h CRTC (3B4h mono modes, 3D4h color modes)
08h Sequencer 3C4h
10h Graphics Controller 3CEh
18h Attribute Controller 3C0h
Single registers
20h Miscellaneous Output register 3C2h
28h Feature Control register (3BAh mono modes, 3DAh color)
30h Graphics 1 Position register 3CCh
38h Graphics 2 Position register 3CAh
02h BYTE register number (0 for single registers)
03h BYTE register value
----------10F5-------------------------------
INT 10 - EGA Register Interface Library - WRITE REGISTER SET
AH = F5h
CX = number of registers to write (>1)
ES:BX -> table of records (see AH=F4h)
Note: the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2
compatibility box, and others
SeeAlso: AX=7F05h,AH=F1h,AH=F3h,AH=F4h
----------10F6------------------------------
INT 10 - EGA Register Interface Library - REVERT TO DEFAULT REGISTERS
AH = F6h
Note: provided by the Microsoft Mouse driver, OS/2 compatibility box, and
others
SeeAlso: AH=F7h
----------10F7------------------------------
INT 10 - EGA Register Interface Library - DEFINE DEFAULT REGISTER TABLE
AH = F7h
DX = port number
Pointer/data chips
00h CRTC (3B4h mono modes, 3D4h color modes)
08h Sequencer 3C4h
10h Graphics Controller 3CEh
18h Attribute Controller 3C0h
Single registers
20h Miscellaneous Output register 3C2h
28h Feature Control register (3BAh mono modes, 3DAh color modes)
30h Graphics 1 Position register 3CCh
38h Graphics 2 Position register 3CAh
ES:BX -> table of one-byte entries, one byte to be written to each
register
Note: the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2
compatibility box, and others
SeeAlso: AH=F6h
----------10FA--BX0000----------------------
INT 10 - EGA Register Interface Library - INTERROGATE DRIVER
AH = FAh
BX = 0000h
Return: BX = 0000h if mouse driver not present
ES:BX -> EGA Register Interface version number, if present:
byte 0 = major release number
byte 1 = minor release number
Note: the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2
compatibility box, and others
SeeAlso: AH=F6h,INT 2F/AX=BC00h
----------10FA------------------------------
INT 10 - FASTBUFF.COM - INSTALLATION CHECK
AH = FAh
Return: AX = 00FAh if installed
ES = segment of resident code
Program: FASTBUFF.COM is a keyboard speedup/screen blanking utility by David
Steiner
----------10FE------------------------------
INT 10 - TopView - GET SHADOW BUFFER
AH = FEh
ES:DI -> assumed video buffer
B800h:0000h color text/CGA graphics, B000h:0000h mono text,
or A000h:0000h EGA/VGA graphics (RSIS environments only)
Return: ES:DI -> actual video buffer for calling process
Notes: if no multitasker or RSIS-compliant environment is installed, ES:DI is
returned unchanged; RSIS is the Relocated Screen Interface
Specification
for display pages other than 0, use AH=05h and AH=0Fh to determine
whether a particular page exists
TopView requires a call to AH=FFh to notify it that the screen has
changed; DESQview will check for changes itself until the first call
to AH=FFh
SeeAlso: AH=05h,AX=5201h,AH=FFh,INT 15/AX=1024h,INT 21/AH=2Bh"DESQview"
SeeAlso: INT 21/AH=ECh"DoubleDOS"
----------10FF-------------------------------
INT 10 - TopView - UPDATE SCREEN FROM SHADOW BUFFER
AH = FFh
CX = number of consecutive changed characters
ES:DI -> first changed character in shadow buffer
Notes: avoid CX=0000h
DESQview will discontinue the automatic screen updating initiated by
AH=FEh after this call
not supported (ignored) by DESQview/X 1.0x
SeeAlso: AH=FEh
----------10FF-------------------------------
INT 10 - DJ GO32.EXE 80386+ DOS extender - VIDEO EXTENSIONS
AH = FFh
AL = video mode
00h 80x25 text
01h default text
02h CXxDX text
03h biggest text
04h 320x200 graphics
05h default graphics
06h CXxDX graphics
07h biggest non-interlaced graphics
08h biggest graphics
SeeAlso: AH=00h,INT 21/AH=FFh"GO32"
----------10FF00-----------------------------
INT 10 - CARBON COPY PLUS v5.0 - CHECK IF CC CONNECTED TO CCHELP
AX = FF00h
Return: BL = 00h not connected
= 01h connected
SeeAlso: AX=FF01h,AX=FF02h
----------10FF01-----------------------------
INT 10 - CARBON COPY PLUS v5.0 - DISCONNECT AND RESET LINE
AX = FF01h
SeeAlso: AX=FF00h,AX=FF02h
----------10FF02-----------------------------
INT 10 - CARBON COPY PLUS v5.0 - GET LAST PHONE NUMBER DIALED
AX = FF02h
Return: ES:DI -> ASCIZ phone number
SeeAlso: AX=FF00h,AX=FF01h
----------11---------------------------------
INT 11 - CPU-generated (80486+) - ALIGNMENT CHECK
Bit AC in the EFLAGS register enables this interrupt on a memory reference
on a mis-aligned address when in privilege mode 3.
----------11---------------------------------
INT 11 - BIOS - GET EQUIPMENT LIST
Return: AX = BIOS equipment list word
bits
0 floppy disk(s) installed (see bits 6-7)
1 80x87 coprocessor installed
2,3 number of 16K banks of RAM on motherboard (PC only)
number of 64K banks of RAM on motherboard (XT only)
2 pointing device installed (PS)
3 unused (PS)
4-5 initial video mode
00 EGA, VGA, or PGA
01 40x25 color
10 80x25 color
11 80x25 monochrome
6-7 number of floppies installed less 1 (if bit 0 set)
8 DMA support installed (PCjr, some Tandy 1000s, 1400LT)
9-11 number of serial ports installed
12 game port installed
13 serial printer attached (PCjr)
internal modem installed (PC/Convertible)
14-15 number of parallel ports installed
---Compaq and many other 386/486 machines--
EAX bit 23: page tables set so that Weitek coprocessor addressable in
real mode
bit 24: Weitek math coprocessor present
---Compaq Systempro
EAX bit 25: internal DMA parallel port available
26: IRQ for internal DMA parallel port (if bit 25 set)
0 = IRQ5
1 = IRQ7
27,28: parallel port DMA channel
00 DMA channel 0
01 DMA channel 0 ???
10 reserved
11 DMA channel 3
SeeAlso: INT 12
----------11----SI6A6A-----------------------
INT 11 - Columbia Data Products Standard Device Level Protocol (SDLP) 1.6
SI = 6A6Ah
AH = command (see below)
AL = SCSI Addressing
bits 2-0 SCSI Target LUN (logical unit number)
bits 5-3 SCSI Target ID
bits 7-6 Host Adapter
Return: CF clear if successful
CF set on error
AL = error code
SeeAlso: INT 21/AX=4402"ASPI"
Values for SDLP command:
00h SDLP initialization
01h SDLP System Identify
02h simple read sectors
03h simple write sectors
04h simple verify sectors/seek to sector
05h get device size/type
06h ready unit
07h format unit
08h diagnostics
09h rewind
0Ah erase
0Bh write filemarks
0Ch space
0Dh prevent/allow media removal
0Eh load/unload media
0Fh reserved - returns good status
10h set block size
11h write setmark
12h set error level
13h get address of Request Sense Buffer
14h get SDLP error via Request Sense
F0h Vendor Unique Function (WD7000-FASST2 only)
FDh reset current SCSI HAC
FEh get/set current SCSI HAC
FFh execute SCSI command
----------11BC--DX1954-----------------------
INT 11 - BNU FOSSIL - INSTALLATION CHECK
AH = BCh
DX = 1954h
Return: AX = 1954h
ES:DX -> entry point of driver (instead of INT 14)
----------11FF--SI6A6A-----------------------
INT 11 - WD7000 SDLP interface - EXECUTE GENERIC SCSI COMMAND
AH = FFh
SI = 6A6Ah
AL = SCSI Addressing
bits 2-0 SCSI Target LUN (logical unit number)
bits 5-3 SCSI Target ID
bit 7 write flag, set for write operations, clear otherwise
CX = bytes of data to be transmitted (max FFF0h)
DH = 00h
DL = length of SCSI Command Descriptor Block
DS:DI -> SCSI Command Descriptor Block
ES:BX -> data buffer
Return: CF set on error
AL = error code
CF clear if successful
Note: because of busmaster operations with WD7000FASST avoid accessing
video memory directly; check 386 memory manager for VDS support.
The WD7000XTAT works with programmed IO and does not have this
limitation.
SeeAlso: INT 21/AX=4402"ASPI"
----------11FFFECXFFFE-----------------------
INT 11 - BACK&FORTH (before v1.62) API
AX = FFFEh
CX = FFFEh
BX = function
00h installation check
Return: AX = 0001h BNFHIGH and BNFLOW both loaded
= 0003h only BNFHIGH loaded
else neither loaded
01h ???
Return: DX:AX -> ???
02h ???
03h ???
04h ???
05h ??? switches current PSP segment and stack if BNFLOW has not
yet announced itself installed
06h ???
Return: AX = ???
SeeAlso: INT 12/AX=FFFEh
----------12---------------------------------
INT 12 - BIOS - GET MEMORY SIZE
Return: AX = kilobytes of contiguous memory starting at absolute address 00000h
Note: this call returns the contents of the word at 0040h:0013h; in PC and
XT, this value is set from the switches on the motherboard
SeeAlso: INT 11,INT 2F/AX=4A06h
----------12----CX1806-----------------------
INT 12 - KEYBUI v2.0+ - INSTALLATION CHECK
CX = 1806h
Return: AX = kilobytes of contiguous memory starting at absolute address 00000h
CX = 1960h if installed
Note: KEYBUI is a resident keyboard driver by Johan Zwiekhorst which allows
accented characters and box drawing on standard QWERTY keyboards; it
also provides break-to-DOS and screen blanking capabilities
----------12----CX1807-----------------------
INT 12 - PARKER v2.0+ - INSTALLATION CHECK
CX = 1807h
Return: AX = kilobytes of contiguous memory starting at absolute address 00000h
CX = 1961h if installed
Note: PARKER is an optionally-resident hard disk parking program by Johan
Zwiekhorst
----------12FFFECXFFFE-----------------------
INT 12 - Back&Forth v1.62+ - API
AX = FFFEh
CX = FFFEh
BX = function
00h installation check
Return: AX = 0001h installed
else not loaded
02h build program ID list
ES:DI -> buffer of at least 100 bytes, to be filled with words
Return: AX = number of programs defined
ES:DI buffer filled with AX words
03h switch to specified task (task need not be open yet)
DX = two-letter program ID
Return: AX = 0000h if task undefined
04h ???
05h ???
06h get version (undoc)
Return: AX = version * 100 (v1.71 = 00ABh)
07h ???
08h get open tasks (undoc)
ES:DI -> task info buffer (see below)
Return: AX = number of open tasks (max 20)
09h ???
Note: Back & Forth is a task switcher by Progressive Solutions, Inc.
SeeAlso: INT 11/AX=FFFEh
Format of task info buffer:
Offset Size Description
00h 21 BYTEs ASCIZ task name
15h BYTE hotkey shift state (as for INT 16/AH=02h)
16h WORD hotkey scan code
18h WORD program ID
----------1300-------------------------------
INT 13 - DISK - RESET DISK SYSTEM
AH = 00h
DL = drive (if bit 7 is set both hard disks and floppy disks reset)
Return: AH = status (see AH=01h)
CF clear if successful (returned AH=00h)
CF set on error
Note: forces controller to recalibrate drive heads (seek to track 0)
SeeAlso: AH=0Dh,AH=11h,INT 21/AH=0Dh,INT 4E"TI Professional"
----------1301-------------------------------
INT 13 - DISK - GET STATUS OF LAST OPERATION
AH = 01h
DL = drive (bit 7 set for hard disk)
Return: CF clear if successful (returned status 00h)
CF set on error
AH = status of previous operation
00h successful completion
01h invalid function in AH or invalid parameter
02h address mark not found
03h disk write-protected (floppy)
04h sector not found
05h reset failed (hard disk)
06h disk changed (floppy)
07h drive parameter activity failed (hard disk)
08h DMA overrun
09h attempted DMA across 64K boundary
0Ah bad sector detected (hard disk)
0Bh bad track detected (hard disk)
0Ch unsupported track or invalid media
0Dh invalid number of sectors on format (hard disk)
0Eh control data address mark detected (hard disk)
0Fh DMA arbitration level out of range (hard disk)
10h uncorrectable CRC or ECC error on read
11h data ECC corrected (hard disk)
20h controller failure
40h seek failed
80h timeout (not ready)
AAh drive not ready (hard disk)
BBh undefined error (hard disk)
CCh write fault (hard disk)
E0h status register error (hard disk)
FFh sense operation failed (hard disk)
Note: some BIOSes return the status in AL; the PS/2 Model 30/286 returns the
status in both AH and AL
----------1302-------------------------------
INT 13 - DISK - READ SECTOR(S) INTO MEMORY
AH = 02h
AL = number of sectors to read (must be nonzero)
CH = low eight bits of cylinder number
CL = sector number (bits 0-5)
high two bits of cylinder (bits 6-7, hard disk only)
DH = head number
DL = drive number (bit 7 set for hard disk)
ES:BX -> data buffer
Return: CF set on error
if AH = 11h (corrected ECC error), AL = burst length
CF clear if successful
AH = status (see AH=01h)
AL = number of sectors transferred
Notes: errors on a floppy may be due to the motor failing to spin up quickly
enough; the read should be retried at least three times, resetting
the disk with AH=00h between attempts
AWARD AT BIOS extended to handle more than 1024 cylinders by placing
bits 10 and 11 of the cylinder number into bits 6 and 7 of DH
SeeAlso: AH=03h,AH=0Ah
----------1303-------------------------------
INT 13 - DISK - WRITE DISK SECTOR(S)
AH = 03h
AL = number of sectors to write (must be nonzero)
CH = low eight bits of cylinder number
CL = sector number (bits 0-5)
high two bits of cylinder (bits 6-7, hard disk only)
DH = head number
DL = drive number (bit 7 set for hard disk)
ES:BX -> data buffer
Return: CF set on error
CF clear if successful
AH = status (see AH=01h)
AL = number of sectors transferred
Notes: errors on a floppy may be due to the motor failing to spin up quickly
enough; the write should be retried at least three times, resetting
the disk with AH=00h between attempts
AWARD AT BIOS extended to handle more than 1024 cylinders by placing
bits 10 and 11 of the cylinder number into bits 6 and 7 of DH
SeeAlso: AH=02h,AH=0Bh
----------1304-------------------------------
INT 13 - DISK - VERIFY DISK SECTOR(S)
AH = 04h
AL = number of sectors to verify (must be nonzero)
CH = low eight bits of cylinder number
CL = sector number (bits 0-5)
high two bits of cylinder (bits 6-7, hard disk only)
DH = head number
DL = drive number (bit 7 set for hard disk)
ES:BX -> data buffer (PC,XT,AT with BIOS prior to 11/15/85)
Return: CF set on error
CF clear if successful
AH = status (see AH=01h)
AL = number of sectors verified
Notes: errors on a floppy may be due to the motor failing to spin up quickly
enough; the write should be retried at least three times, resetting
the disk with AH=00h between attempts
this function does not compare the disk with memory, it merely
checks whether the sector's stored CRC matches the data's actual CRC
AWARD AT BIOS extended to handle more than 1024 cylinders by placing
bits 10 and 11 of the cylinder number into bits 6 and 7 of DH
SeeAlso: AH=02h
----------1305-------------------------------
INT 13 - FLOPPY - FORMAT TRACK
AH = 05h
AL = number of sectors to format
CH = track number
DH = head number
DL = drive number
ES:BX -> address field buffer (see below)
Return: CF set on error
CF clear if successful
AH = status (see AH=01h)
Notes: on AT or higher, call AH=17h first
the number of sectors per track is read from the diskette parameter
table pointed at by INT 1E
SeeAlso: AH=05h"FIXED",AH=17h,AH=18h,INT 1E
Format of address field buffer entry (one per sector in track):
Offset Size Description
00h BYTE track number
01h BYTE head number (0-based)
02h BYTE sector number
03h BYTE sector size (00h=128 bytes, 01h=256 bytes, 02h=512, 03h=1024)
----------1305-------------------------------
INT 13 - FIXED DISK - FORMAT TRACK
AH = 05h
AL = interleave value (XT-type controllers only)
ES:BX -> 512-byte format buffer
the first 2*(sectors/track) bytes contain F,N for each sector
F = 00h for good sector, 80h for bad sector
N = sector number
CH = cylinder number (bits 8,9 in high bits of CL)
CL = high bits of cylinder number (bits 7,6)
DH = head
DL = drive
Return: AH = status code (see AH=01h)
Notes: AWARD AT BIOS extended to handle more than 1024 cylinders by placing
bits 10 and 11 of the cylinder number into bits 6 and 7 of DH
for XT-type controllers on an AT or higher, AH=0Fh should be called
first
SeeAlso: AH=05h"FLOPPY",AH=06h"FIXED",AH=07h"FIXED",AH=0Fh,AH=18h,AH=1Ah
----------1305-------------------------------
INT 13 - Future Domain SCSI BIOS - SEND SCSI MODE SELECT COMMAND
AH = 05h
DL = hard drive ID
ES:BX -> mode select data (see below)
Return: CF set on error
AH = status code (see AH=01h)
Notes: this function can be called before AH=07h"SCSI" or AH=06h"SCSI" to
format a SCSI disk with the desired parameters
the mode select data below is from the SCSI-1 specification
SeeAlso: AH=06h"SCSI",AH=07h"SCSI"
Format of mode select data:
Offset Size Description
00h BYTE number of bytes of remaining data (12 + vendor unique length)
01h BYTE reserved (0)
02h BYTE medium type (0 for hard disk)
03h BYTE reserved (0)
04h BYTE block descriptor length (8)
05h BYTE density code (0 for hard disk)
06h 3 BYTEs number of blocks (big-endian) (000000h for entire disk)
09h BYTE reserved (0)
0Ah 3 BYTEs block length (big-endian) (512 standard, or 256)
0Dh ??? vendor-specific parameter bytes (optional)
----------1306-------------------------------
INT 13 - FIXED DISK - FORMAT TRACK AND SET BAD SECTOR FLAGS (XT,PORT)
AH = 06h
AL = interleave value
CH = cylinder number (bits 8,9 in high bits of CL)
CL = sector number
DH = head
DL = drive
Return: AH = status code (see AH=01h)
Note: AWARD AT BIOS extended to handle more than 1024 cylinders by placing
bits 10 and 11 of the cylinder number into bits 6 and 7 of DH
SeeAlso: AH=05h"FIXED",AH=07h"FIXED"
----------1306-------------------------------
INT 13 - Future Domain SCSI BIOS - FORMAT DRIVE WITH BAD SECTOR MAPPING
AH = 06h
AL = interleave
(0 = default, 1 = consecutive sectors, 2 - 255 = vendor unique)
DL = hard drive ID
DH = bits 7-5 drive LUN
bit 4 defect list is available
bit 3 defect list is complete (erase drive's defect list)
bits 2-0 defect table format
(000=use defect table A, 100=use defect table B,
101=use defect table C)
ES:BX -> defect table A, B or C (see below)
Return: CF set on error
AH = status code (see AH=01h)
Notes: block addresses must be in ascending order (for table B, cylinder is
most significant, byte from index least significant; for table C,
cylinder is most significant, sector number least significant)
table B defect bytes from index of FFFFFFFFh indicates that the entire
track shall be reassigned
table C defect sector number of FFFFFFFFh indicates that the entire
track shall be reassigned
SeeAlso: AH=05h"SCSI",AH=06h"FIXED",AH=07h"SCSI"
Format of defect table A:
Offset Size Description
00h WORD number of bytes remaining in table
02h BYTE reserved (0)
03h BYTE reserved (0)
04h WORD defect list length (big-endian) (4*number of defects)
06h 4 DWORDs defect block addresses (big-endian)
Format of defect table B:
Offset Size Description
00h WORD number of bytes remaining in table
02h BYTE reserved (0)
03h BYTE reserved (0)
04h WORD defect list length (big-endian) (8*number of defects)
06h 8N BYTEs Defect List [array]
Offset Size Description
00h 3 BYTEs cylinder number of defect (big-endian)
03h BYTE head number of defect
04h DWORD defect bytes from index (big-endian)
Format of defect table C:
Offset Size Description
00h WORD number of bytes remaining in table
02h BYTE reserved (0)
03h BYTE reserved (0)
04h WORD defect list length (big-endian) (8*number of defects)
06h 8N BYTEs defect list
Offset Size Description
00h 3 BYTEs cylinder number of defect (big-endian)
03h BYTE head number of defect
04h DWORD defect sector number (big-endian)
----------1307-------------------------------
INT 13 - FIXED DISK - FORMAT DRIVE STARTING AT GIVEN TRACK (XT,PORT)
AH = 07h
AL = interleave value (XT only)
ES:BX = 512-byte format buffer (see AH=05h)
CH = cylinder number (bits 8,9 in high bits of CL)
CL = sector number
DH = head
DL = drive
Return: AH = status code (see AH=01h)
Note: AWARD AT BIOS extended to handle more than 1024 cylinders by placing
bits 10 and 11 of the cylinder number into bits 6 and 7 of DH
SeeAlso: AH=05h"FIXED",AH=06h"FIXED",AH=1Ah
----------1307-------------------------------
INT 13 - Future Domain SCSI BIOS - FORMAT DRIVE
AH = 07h
AL = interleave (0 = default, 1 = consecutive sectors,
2 - 255 = vendor unique)
DL = hard drive ID
Return: CF set on error
AH = status code (see AH=01h)
SeeAlso: AH=05h"SCSI",AH=06h"SCSI",AH=07h"FIXED"
----------1308-------------------------------
INT 13 - DISK - GET DRIVE PARAMETERS (PC,XT286,CONV,PS,ESDI,SCSI)
AH = 08h
DL = drive (bit 7 set for hard disk)
Return: CF set on error
AH = status (07h) (see AH=01h)
CF clear if successful
AH = 00h
BL = drive type (AT/PS2 floppies only)
01h 360K
02h 1.2M
03h 720K
04h 1.44M
06h ??? (checked by 386MAX v6.01)
CH = low eight bits of maximum cylinder number
CL = maximum sector number (bits 5-0)
high two bits of maximum cylinder number (bits 7-6)
DH = maximum head number
DL = number of drives
ES:DI -> drive parameter table (floppies only)
Notes: may return successful even though specified drive is greater than the
number of attached drives of that type (floppy/hard); check DL to
ensure validity
for systems predating the IBM AT, this call is only valid for hard
disks, as it is implemented by the hard disk BIOS rather than the
ROM BIOS
Toshiba laptops with HardRAM return DL=02h when called with DL=80h,
but fail on DL=81h. The BIOS data at 40h:75h correctly reports 01h.
SeeAlso: AH=15h,INT 1E,INT 41
----------1309-------------------------------
INT 13 - HARD DISK - INITIALIZE CONTROLLER WITH DRIVE PARAMETERS (AT,PS)
AH = 09h
DL = drive (80h for first, 81h for second)
Return: CF clear if successful
CF set on error
AH = status (see AH=01h)
Notes: on the PC and XT, this function uses the parameter table pointed at by
INT 41
on the AT and later, this function uses the parameter table pointed at
by INT 41 if DL=80h, and the parameter table pointed at by INT 46 if
DL=81h
SeeAlso: INT 41,INT 46
----------130A-------------------------------
INT 13 - HARD DISK - READ LONG SECTOR(S) (AT and later)
AH = 0Ah
AL = number of sectors
CH = low eight bits of cylinder number
CL = sector number (bits 5-0)
high two bits of cylinder number (bits 7-6)
DH = head number
DL = drive number (80h = first, 81h = second)
ES:BX -> data buffer
Return: CF clear if successful
CF set on error
AH = status (see AH=01h)
AL = number of sectors transferred
Notes: this function reads in four to seven bytes of error-correcting code
along with each sector's worth of information
data errors are not automatically corrected, and the read is aborted
after the first sector with an ECC error
used for diagnostics only on PS/2 systems
SeeAlso: AH=02h,AH=0Bh
----------130B-------------------------------
INT 13 - HARD DISK - WRITE LONG SECTOR(S) (AT and later)
AH = 0Bh
AL = number of sectors
CH = low eight bits of cylinder number
CL = sector number (bits 5-0)
high two bits of cylinder number (bits 7-6)
DH = head number
DL = drive number (80h = first, 81h = second)
ES:BX -> data buffer
Return: CF clear if successful
CF set on error
AH = status (see AH=01h)
AL = number of sectors transferred
Notes: each sector's worth of data must be followed by four to seven bytes of
error-correction information
used for diagnostics only on PS/2 systems
SeeAlso: AH=03h,AH=0Ah
----------130C-------------------------------
INT 13 - HARD DISK - SEEK TO CYLINDER
AH = 0Ch
CH = low eight bits of cylinder number
CL = sector number (bits 5-0)
high two bits of cylinder number (bits 7-6)
DH = head number
DL = drive number (80h = first, 81h = second hard disk)
Return: CF set on error
CF clear if successful
AH = status (see AH=01h)
SeeAlso: AH=00h,AH=02h,AH=0Ah
----------130D-------------------------------
INT 13 - HARD DISK - RESET HARD DISKS
AH = 0Dh
DL = drive number (80h = first, 81h = second hard disk)
Return: CF set on error
CF clear if successful
AH = status (see AH=01h)
Notes: reinitializes the hard disk controller, resets the specified drive's
parameters, and recalibrates the drive's heads (seek to track 0)
not for PS/2 ESDI drives
SeeAlso: AH=00h,INT 21/AH=0Dh
----------130E-------------------------------
INT 13 - HARD DISK - READ SECTOR BUFFER (XT only)
AH = 0Eh
DL = drive number (80h = first, 81h = second hard disk)
ES:BX -> buffer
Return: CF set on error
CF clear if successful
AH = status code (see AH=01h)
Notes: transfers controller's sector buffer. No data is read from the drive
used for diagnostics only on PS/2 systems
SeeAlso: AH=0Ah
----------130F-------------------------------
INT 13 - HARD DISK - WRITE SECTOR BUFFER (XT only)
AH = 0Fh
DL = drive number (80h = first, 81h = second hard disk)
ES:BX -> buffer
Return: CF set on error
CF clear if successful
AH = status code (see AH=01h)
Notes: does not write data to the drive
should be called before formatting to initialize an XT-type
controller's sector buffer
used for diagnostics only on PS/2 systems
SeeAlso: AH=0Bh
----------1310-------------------------------
INT 13 - HARD DISK - CHECK IF DRIVE READY
AH = 10h
DL = drive number (80h = first, 81h = second hard disk)
Return: CF set on error
CF clear if successful
AH = status (see AH=01h)
----------1311-------------------------------
INT 13 - HARD DISK - RECALIBRATE DRIVE
AH = 11h
DL = drive number (80h = first, 81h = second hard disk)
Return: CF set on error
CF clear if successful
AH = status (see AH=01h)
Note: causes hard disk controller to seek the specified drive to cylinder 0
SeeAlso: AH=00h,AH=0Ch,AH=19h"FIXED DISK"
----------1312-------------------------------
INT 13 - HARD DISK - CONTROLLER RAM DIAGNOSTIC (XT,PS)
AH = 12h
DL = drive number (80h = first, 81h = second hard disk)
Return: CF set on error
CF clear if successful
AH = status code (see AH=01h)
SeeAlso: AH=13h,AH=14h
----------1312-------------------------------
INT 13 - Future Domain SCSI CONTROLLER - STOP SCSI DISK
AH = 12h
DL = hard drive ID
Return: CF set on error
AH = status code (see AH=01h)
Notes: available at least on the TMC-870 8-bit SCSI controller BIOS v6.0A
if the given drive is a SCSI device, the SCSI Stop Unit command is sent
and either "Disk prepared for shipping" or "Disk Stop command failed"
is displayed
----------1313-------------------------------
INT 13 - HARD DISK - DRIVE DIAGNOSTIC (XT,PS)
AH = 13h
DL = drive number (80h = first, 81h = second hard disk)
Return: CF set on error
CF clear if successful
AH = status code (see AH=01h)
SeeAlso: AH=12h,AH=14h
----------1314-------------------------------
INT 13 - HARD DISK - CONTROLLER INTERNAL DIAGNOSTIC
AH = 14h
Return: CF set on error
CF clear if successful
AH = status code (see AH=01h)
SeeAlso: AH=12h,AH=13h
----------1315-------------------------------
INT 13 - DISK - GET DISK TYPE (XT 1/10/86 or later,XT286,AT,PS)
AH = 15h
DL = drive number (bit 7 set for hard disk)
Return: CF clear if successful
AH = type code
00h no such drive
01h floppy without change-line support
02h floppy with change-line support
03h hard disk
CX:DX = number of 512-byte sectors
CF set on error
AH = status (see AH=01h)
SeeAlso: AH=08h,AH=16h,AH=17h,AH=19h"SCSI"
----------1316-------------------------------
INT 13 - FLOPPY DISK - DETECT DISK CHANGE (XT 1/10/86 or later,XT286,AT,PS)
AH = 16h
DL = drive number
Return: CF clear if change line inactive
AH = 00h (disk not changed)
CF set if change line active
AH = 06h change line active or not supported
= 80h drive not ready or not present
Note: call AH=15h first to determine whether the drive supports a change
line
SeeAlso: AH=15h
----------1317-------------------------------
INT 13 - FLOPPY DISK - SET DISK TYPE FOR FORMAT (AT,PS)
AH = 17h
AL = format type
01h = 320/360K disk in 360K drive
02h = 320/360K disk in 1.2M drive
03h = 1.2M disk in 1.2M drive
04h = 720K disk in 720K drive
DL = drive number
Return: CF set on error
CF clear if successful
AH = status (see AH=01h)
Note: this function does not handle 1.44M drives; use AH=18h instead
SeeAlso: AH=15h,AH=18h
----------1318-------------------------------
INT 13 - DISK - SET MEDIA TYPE FOR FORMAT (AT model 3x9,XT2,XT286,PS)
AH = 18h
DL = drive number
CH = lower 8 bits of highest cylinder number (number of cylinders - 1)
CL = sectors per track (bits 0-5)
top 2 bits of highest cylinder number (bits 6,7)
Return: AH = status
00h requested combination supported
01h function not available
0Ch not supported or drive type unknown
80h there is no disk in the drive
ES:DI -> 11-byte parameter table
SeeAlso: AH=05h,AH=07h,AH=17h
----------1318-------------------------------
INT 13 - Future Domain SCSI BIOS - GET SCSI CONTROLLER INFORMATION
AH = 18h
DL = hard drive ID
Return: CF set on error
AH = status code (see AH=01h)
CF clear if successful
AX = 4321h (magic number)
CX = controller family code
0203h TMC-1650/1660/1670/1680 (ROM 2.0)
BH = number of exclusively ROM-controlled SCSI devices
BL = canonical SCSI device number for specified drive
040Ah TMC-820/830/840/850/860/870/875/880/885 (ROM <= 6.0A)
BH = number of exclusively ROM-controlled SCSI devices
BL = canonical SCSI device number for specified drive
050Dh TMC-840/841/880/881 (ROM 5.2D)
BH = number of exclusively ROM-controlled SCSI devices
BL = canonical SCSI device number for specified drive
0700h TMC-830/850/860/875/885 (ROM 7.0)
DH = number of exclusively ROM-controlled SCSI devices
DL = canonical SCSI device number for specified drive
Note: also sets an internal flag (non-resettable) which prevents some
controller messages from being displayed, allows writes to
removable devices (use caution!), and enables the INT 13 interface
for more than one drive (i.e. DL >= 81h) in at least some ROM
versions
SeeAlso: AH=05h"SCSI",AH=1Bh"SCSI"
----------1319-------------------------------
INT 13 - FIXED DISK - PARK HEADS (XT286,PS)
AH = 19h
DL = drive
Return: CF set on error
AH = status (see AH=01h)
SeeAlso: AH=11h
----------1319-------------------------------
INT 13 - Future Domain SCSI CONTROLLER - REINITIALIZE DRIVE
AH = 19h
DL = hard drive ID
Return: CF set on error
AH = status code (see AH=01h)
CF clear if successful
AH = disk type (03h = fixed disk)
CX:DX = number of 512-byte sectors
Notes: sends SCSI Read Capacity command to get number of logical blocks and
adjusts the result for 512-byte sectors
displays either "Error in Read Capacity Command" or "nnn Bytes per
sector" (nnn=256 or 512, the only sizes supported in the translation
code)
should probably be called when a removable device has its media changed
returns the same values as AH=15h
SeeAlso: AH=15h,AH=1Ah
----------131A-------------------------------
INT 13 - ESDI FIXED DISK - FORMAT UNIT (PS)
AH = 1Ah
AL = defect table count
CL = format modifiers
bit 4: generate periodic interrupt
bit 3: perform surface analysis
bit 2: update secondary defect map
bit 1: ignore secondary defect map
bit 0: ignore primary defect map
DL = drive
ES:BX -> defect table
Return: CF set on error
AH = status (see AH=01h)
Note: if periodic interrupt selected, INT 15/AH=0Fh is called after each
cylinder is formatted
SeeAlso: AH=07h,INT 15/AH=0Fh
----------131A-------------------------------
INT 13 - Future Domain SCSI CONTROLLER - GET SCSI PARTIAL MEDIUM CAPACITY
AH = 1Ah
CH = track (bits 8,9 in high bits of CL)
CL = sector (01h to number of sectors/track for drive)
DH = head
DL = hard drive ID
Return: CF set on error
AH = status code (see AH=01h)
CX:DX = logical block number of last quickly-accessible block after
given block
Note: sends SCSI Read Capacity command with the PMI bit set to obtain the
logical block address of the last block after which a substantial
delay in data transfer will be encountered (usually the last block
on the current cylinder). No translation to 512 byte sectors is
performed on the result if data is stored on the disk in other than
512 byte sectors.
SeeAlso: AH=15h,AH=19h"SCSI"
----------131B-------------------------------
INT 13 - ESDI FIXED DISK - GET MANUFACTURING HEADER
AH = 1Bh
AL = number of record
DL = drive
ES:BX -> buffer for manufacturing header (defect list)
Return: CF set on error
AH = status
Note: manufacturing header format (Defect Map Record format) can be found
in IBM 70MB, 115MB Fixed Disk Drives Technical Reference
----------131B-------------------------------
INT 13 - Future Domain SCSI CONTROLLER - GET POINTER TO SCSI DISK INFO BLOCK
AH = 1Bh
DL = hard drive ID
Return: CF set on error
AH = status code (see AH=01h)
CF clear if successful
ES:BX -> SCSI disk information block
Note: also sets a non-resettable flag which prevents some controller messages
from being displayed
SeeAlso: AH=18h"SCSI",AH=1Ch"SCSI"
Format of SCSI disk information block:
Offset Size Description
00h BYTE drive physical information
bit 0: ???
bit 1: device uses parity
bit 2: 256 bytes per sector instead of 512
bit 3: don't have capacity yet???
bit 4: disk is removable
bit 5: logical unit number is not present
01h WORD translated number of cylinders
03h BYTE translated number of heads
04h BYTE translated number of sectors per track (17, 34, or 63)
05h BYTE drive address
bits 0-2: logical unit number
bits 3-5: device number
06h BYTE 01h at initialization
07h BYTE sense code byte 00h, or extended sense code byte 0Ch
08h BYTE 00h
09h BYTE 00h or extended sense code byte 02h (sense key)
0Ah BYTE 00h
0Bh 10 BYTEs copy of Command Descriptor Block (CDB)
15h DWORD translated number of sectors on device
----------131C-------------------------------
INT 13 - Future Domain SCSI CONTROLLER - GET POINTER TO FREE CONTROLLER RAM
AH = 1Ch
DL = hard drive ID (any valid SCSI hard disk)
Return: CF set on error
AH = status code (see AH=01h)
CF clear if successful
ES:BX -> first byte of free RAM on controller
Notes: the Future Domain TMC-870 contains 1024 bytes of RAM at offsets 1800h
to 1BFFh on-bard the controller for storing drive information and
controller status; ES:BX points to the first byte available for other
uses
ES contains the segment at which the controller resides; the
controller's two memory-mapped I/O ports are at offsets 1C00h, 1E00h
SeeAlso: AH=1Bh"SCSI"
----------131C0A-----------------------------
INT 13 - ESDI FIXED DISK - GET DEVICE CONFIGURATION
AX = 1C0Ah
DL = drive
ES:BX -> buffer for device configuration (drive physical parameter)
Return: CF set on error
AH = status
Note: device configuration format can be found in IBM ESDI Fixed Disk Drive
Adapter/A Technical Reference
----------131C0B-----------------------------
INT 13 - ESDI FIXED DISK - GET ADAPTER CONFIGURATION
AX = 1C0Bh
ES:BX -> buffer for adapter configuration
Return: CF set on error
AH = status
SeeAlso: AX=1C0Ch
----------131C0C-----------------------------
INT 13 - ESDI FIXED DISK - GET POS INFORMATION
AX = 1C0Ch
ES:BX -> POS information
Return: CF set on error
AH = status
SeeAlso: AX=1C0Bh
----------131C0E-----------------------------
INT 13 - ESDI FIXED DISK - TRANSLATE RBA TO ABA
AX = 1C0Eh
CH = low 8 bits of cylinder number
CL = sector number, high two bits of cylinder number in bits 6 and 7
DH = head number
DL = drive number
ES:BX -> ABA number
Return: CF set on error
AH = status
Note: ABA (absolute block address) format can be found in IBM ESDI Adapter
Technical Reference by using its Device Configuration Status Block
----------131D-------------------------------
INT 13 - IBMCACHE.SYS - CACHE STATUS
AH = 1Dh
AL = subfunction
01h get status record
DL = drive???
Return: ES:BX -> status record
CF set on error
AH = error code
02h set cache status
ES:BX -> status record
DL = drive???
Return: CF set on error
Format of status record:
Offset Size Description
00h DWORD total number of read requests
04h DWORD total number of hits
08h DWORD number of physical disk reads
0Ch DWORD total number of sectors requested by physical disk reads
10h 6 bytes ???
16h DWORD pointer to start of error list
1Ah DWORD pointer to end of error list
1Eh WORD ???
20h BYTE using extended memory if nonzero
21h BYTE ???
22h 4 BYTEs ASCII version number
26h WORD cache size in K
28h WORD sectors per page
Format of error list:
Offset Size Description
00h DWORD relative block address of bad page
04h BYTE drive
05h BYTE sector bit-map
06h WORD next error
----------1320-------------------------------
INT 13 - DISK - ??? (Western Digital "Super BIOS")
AH = 20h
???
Return: ???
Note: seems to return some kind of status
----------1320FF-----------------------------
INT 13 - QCACHE - DISMOUNT
AX = 20FFh
Return: ???
----------1321-------------------------------
INT 13 - QCACHE - FLUSH CACHE
AH = 21h
Return: ???
SeeAlso: AH=25h,AH=2Eh
----------1322-------------------------------
INT 13 - QCACHE - ENABLE/DISABLE CACHE
AH = 22h
AL = 00h disable cache
01h enable cache
----------1324-------------------------------
INT 13 - QCACHE - SET SECTORS
AH = 24h
BX = number of sectors
Return: ???
----------1325-------------------------------
INT 13 - QCACHE - SET FLUSH INTERVAL
AH = 25h
BC = interval
Return: ???
SeeAlso: AH=21h,AH=2Eh
----------1327--BX0000-----------------------
INT 13 - QCACHE - INSTALLATION CHECK
AH = 27h
BX = 0000h
Return: BX nonzero if installed
----------132A-------------------------------
INT 13 - QCACHE - SET BUFFER SIZE
AH = 2Ah
AL = buffer size
Return: ???
----------132C-------------------------------
INT 13 - QCACHE - SET BUFFERED WRITES
AH = 2Ch
AL = state
00h disable
01h enable
Return: ???
SeeAlso: AH=2Dh
----------132D-------------------------------
INT 13 - QCACHE - SET BUFFERED READ
AH = 2Dh
AL = state
00h disable
01h enable
Return: ???
SeeAlso: AH=2Ch
----------132E-------------------------------
INT 13 - QCACHE - SET FLUSH COUNT
AH = 2Eh
BX = flush count
Return: ???
SeeAlso: AH=21h,AH=25h
----------1330-------------------------------
INT 13 - QCACHE - GET INFO
AH = 30h
AL = what to get
00h system info
01h drive info
DS:DX -> buffer for info
Return: ???
----------135504-----------------------------
INT 13 - Seagate - GET CONTROLLER TYPE???
AX = 5504h
DX = drive (bit 7 set for hard disk)
Return: CF clear if successful
AX = 4321h,4322h if Seagate controller
CF set on error
SeeAlso: AX=5505h,AX=5514h
----------135505-----------------------------
INT 13 - Seagate - PARK HEADS???
AX = 5505h
DX = drive (bit 7 set for hard disk)
Return: CF clear if successful
CF set on error
SeeAlso: AX=5504h,AX=5515h
----------135514-----------------------------
INT 13 - Seagate - ???
AX = 5514h
DX = drive (bit 7 set for hard disk)
Return: CF clear if successful
CF set on error
AX = return value (FEBEh,FEBFh,FEDAh,FEDBh)
SeeAlso: AX=5504h,AX=5515h
----------135515-----------------------------
INT 13 - Seagate - PARK HEADS???
AX = 5515h
DX = drive (bit 7 set for hard disk)
Return: CF clear if successful
CF set on error
Note: appears to be identical to AX=5505h
SeeAlso: AX=5504h,AX=5505h
----------1370-------------------------------
INT 13 - Priam EDVR.SYS DISK PARTITIONING SOFTWARE???
AH = 70h
???
Return: ???
Note: Priam's EDISK.EXE (FDISK replacement) and EFMT.EXE (low-level
formatting program) make this call, presumably to EDVR.SYS (the
partitioning driver)
SeeAlso: AH=ADh
----------1375-------------------------------
INT 13 - ???
AH = 75h
???
Return: AH = ???
???
Note: intercepted by PC-Cache (v5.1 only)
----------1376-------------------------------
INT 13 - ???
AH = 76h
???
Return: AH = ???
???
Note: intercepted by PC-Cache (v5.1 only)
----------137B00-----------------------------
INT 13 - NOW! - GET INFORMATION
AX = 7B00h
CX:DX -> 1F8h-byte buffer for information record (see below)
Return: AX = 0000h
BX = segment of main resident code
ES = ???
Program: NOW! is a disk cache by Vertisoft Systems, Inc.
SeeAlso: AX=7B02h,AH=EFh
Format of information record:
Offset Size Description
00h 80 BYTEs name of directory from which NOW! was started
50h 424 BYTEs ???
81h ? BYTEs array of bytes for ???
F7h 250 BYTEs array of 25 entries, one per drive???
Offset Size Description
00h 2 BYTEs ???
02h WORD ???
04h WORD ???
06h 4 BYTEs ???
1F1h 7 BYTEs ???
----------137B01-----------------------------
INT 13 - NOW! - ???
AX = 7B01h
Return: DX = segment of ???
SeeAlso: AX=7B00h
----------137B02-----------------------------
INT 13 - NOW! - SET INFORMATION
AX = 7B02h
BX = segment of ??? (10h above a PSP)
CX:DX -> 1F8h-byte information record (see AX=7B00h)
Return: ???
Program: NOW! is a disk cache by Vertisoft Systems, Inc.
Note: NOW! grabs the INT 24h value from the PSP reached via the segment in
BX
SeeAlso: AX=7B00h
----------137B03-----------------------------
INT 13 - NOW! - ???
AX = 7B03h
???
Return: ???
SeeAlso: AX=7B00h,AX=7B04h
----------137B04-----------------------------
INT 13 - NOW! - ???
AX = 7B04h
???
Return: ???
SeeAlso: AX=7B03h
----------137B05-----------------------------
INT 13 - NOW! - GET ???
AX = 7B05h
BX:AX = number of physical accesses???
DX:CX = total disk accesses???
SeeAlso: AX=7B00h,AX=7B06h
----------137B06-----------------------------
INT 13 - NOW! - GET ???
AX = 7B06h
BX = ???
Return: AX = 0000h
BX = ???
SeeAlso: AX=7B05h,AX=7B07h
----------137B07-----------------------------
INT 13 - NOW! - GET ???
AX = 7B07h
Return: AX = ???
BX = ???
CX = ???
DX = ???
SeeAlso: AX=7B06h
----------137B08-----------------------------
INT 13 - NOW! - ???
AX = 7B08h
CX = ??? (default 00h)
Return: ???
SeeAlso: AX=7B00h
----------1380--CX6572-----------------------
INT 13 - FAST! - API
AH = 80h
CX = 6572h
DX = 1970h
ES:BX -> data structure (see below)
AL = function
01h ???
04h ???
05h ???
06h installation check
Return: AX = 1965h if installed
07h ???
09h ???
0Ah ???
0Bh ???
0Ch set ??? flag
0Dh clear ??? flag
Return: AH = 00h if successful (except function 06h)
Format of data structure:
Offset Size Description
00h DWORD pointer to 19-byte signature string
13h 07h 06h 08h 11h 18h 0Fh 0Eh 02h 18h 13h 08h 0Bh 08h 01h 00h
04h 08h 15h (v4.04)
04h ??? ???
----------1381--SI4358-----------------------
INT 13 - Super PC Kwik/PC-Cache 5.x - ???
AH = 81h
SI = 4358h
???
Return: ???
Note: PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
Super PC Kwik, and thus support this call
returns immediately in PC-Cache v5.x
----------1382--SI4358-----------------------
INT 13 - Super PC Kwik/PC-Cache 5.x - ???
AH = 82h
SI = 4358h
???
Return: AL = ???
Note: PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
Super PC Kwik, and thus support this call
SeeAlso: AH=84h
----------1383--SI4358-----------------------
INT 13 - Super PC Kwik/PC-Cache 5.x - ???
AH = 83h
SI = 4358h
AL = ???
ES:BX -> ???
???
Return: ???
Note: PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
Super PC Kwik, and thus support this call
SeeAlso: AH=85h
----------1384--SI4358-----------------------
INT 13 - Super PC Kwik/PC-Cache 5.x - ???
AH = 84h
SI = 4358h
AL = ???
???
Return: AL = ???
Note: PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
Super PC Kwik, and thus support this call
SeeAlso: AH=82h
----------1385--SI4358-----------------------
INT 13 - Super PC Kwik/PC-Cache 5.x - ???
AH = 85h
SI = 4358h
AL = ???
DL = ???
???
Return: ???
Note: PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
Super PC Kwik, and thus support this call
SeeAlso: AH=83h
----------1386--SI4358-----------------------
INT 13 - Qualitas Qcache v4.00 - ???
AH = 86h
SI = 4358h
???
Return: ???
----------1387--SI4358-----------------------
INT 13 - Qualitas Qcache v4.00 - ???
AH = 87h
SI = 4358h
???
Return: ???
----------1388--SI4358-----------------------
INT 13 - Qualitas Qcache v4.00 - ???
AH = 88h
SI = 4358h
???
Return: ???
----------138EED-----------------------------
INT 13 - HyperDisk v4.01+ - ???
AX = 8EEDh
???
Return: ???
Note: HyperDisk is a shareware disk cache by HyperWare (Roger Cross)
SeeAlso: AX=8EEEh,AX=8EEFh,AH=EEh,INT 2F/AH=DFh
----------138EEE-----------------------------
INT 13 - HyperDisk v4.01+ - ???
AX = 8EEEh
Return: CF set
AX = CS of HyperDisk resident code
???
Note: identical to AX=8EEFh in HYPERDKX v4.21-4.30
SeeAlso: AX=8EEDh,AX=8EEFh,AH=EEh
----------138EEF-----------------------------
INT 13 - HyperDisk v4.01+ - ???
AX = 8EEFh
Return: CF set
AX = CS of HyperDisk resident code
???
Note: identical to AX=8EEEh in HYPERDKX v4.21-4.30
SeeAlso: AX=8EEDh,AX=8EEEh,AH=EEh
----------13A0--SI4358-----------------------
INT 13 - Super PC Kwik - GET RESIDENT CODE SEGMENT
AH = A0h
SI = 4358h
Return: AX = segment of resident code
Note: PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
Super PC Kwik, and thus support this call
SeeAlso: INT 16/AX=FFA5h/CX=1111h
----------13A1--SI4358-----------------------
INT 13 - Super PC Kwik - FLUSH CACHE
AH = A1h
SI = 4358h
Note: PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
Super PC Kwik, and thus support this call
SeeAlso: INT 16/AX=FFA5h/CX=FFFFh
----------13A2--SI4358-----------------------
INT 13 - Super PC Kwik - ???
AH = A2h
SI = 4358h
???
Return: ???
Note: PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
Super PC Kwik, and thus support this call
----------13A5-------------------------------
INT 13 C - Super PC Kwik - ???
AH = A5h
SI = ???
Return: AX = ???
SI = ???
Notes: called when a program terminates but stays resident (see INT 21/AH=31h)
this call is not supported by Qualitas Qcache 4.00
----------13AA--SI4358-----------------------
INT 13 - Qualitas Qcache v4.00 - ???
AH = AAh
SI = 4358h
???
Return: ???
----------13AB--SI4358-----------------------
INT 13 - Qualitas Qcache v4.00 - ???
AH = ABh
SI = 4358h
???
Return: ???
----------13AC--SI4358-----------------------
INT 13 - Qualitas Qcache v4.00 - ???
AH = ACh
SI = 4358h
???
Return: ???
----------13AD-------------------------------
INT 13 - Priam HARD DISK CONTROLLER???
AH = ADh
???
Return: ???
Note: this call is made from Priam's EFMT.EXE (low-level formatter), probably
to check the ROM type on the controller for their hard disk kits
SeeAlso: AH=70h
----------13AD--SI4358-----------------------
INT 13 - Qualitas Qcache v4.00 - ???
AH = ADh
SI = 4358h
???
Return: ???
----------13B0--SI4358-----------------------
INT 13 - Super PC Kwik - ???
AH = B0h
SI = 4358h
???
Return: ???
Note: PC Tools PC-Cache 5.x is an OEM version of Super PC Kwik, and thus
supports this call; Qualitas Qcache does not support it
----------13EE-------------------------------
INT 13 - SWBIOS - SET 1024 CYLINDER FLAG
AH = EEh
DL = drive number (80h, 81h)
Return: CF clear
AH = 00h
Notes: the following INT 13 call will interpret the cylinder number as 1024
less than the desired cylinder
flag cleared by all INT 13 calls except AH=EEh
SWBIOS is a TSR by Ontrack Computer Systems; Disk Manager also supports
these calls
also supported by HyperDisk v4.01+ and PC-Cache v5.5+, in order to allow
caching of drives using SWBIOS to access more than 1024 cylinders
SeeAlso: AH=F9h,AH=FEh,INT 16/AX=FFA5h/CX=1111h,INT 2F/AH=DFh
----------13EF-------------------------------
INT 13 - NOW! - ???
AH = EFh
CX = ???
DL = ???
???
Return: ???
SeeAlso: AX=7B00h
----------13F9-------------------------------
INT 13 - SWBIOS - INSTALLATION CHECK
AH = F9h
DL = drive number (80h,81h)
Return: CF clear
DX = configuration word
bit 15 set if other SWBIOS extensions available
CF set on error
Note: SWBIOS is a TSR by Ontrack Computer Systems; Disk Manager also supports
these calls
SeeAlso: AH=EEh
----------13FA--DX5945-----------------------
INT 13 - PC Tools v8+ VSAFE, VWATCH - API
AH = FAh
DX = 5945h
AL = function (00h-07h)
Return: varies by function
Note: this API is identical to the ones on INT 16/AH=FAh and INT 21/AH=FAh,
so it is listed in its entirety under INT 16/AX=FA00h and following
SeeAlso: INT 16/AX=FA00h
----------13FE-------------------------------
INT 13 - SWBIOS - GET EXTENDED CYLINDER COUNT
AH = FEh
DL = drive number (80h, 81h)
Return: CF clear
DX = number of cylinders beyond 1024 on drive
Notes: standard INT 13/AH=08h will return a cylinder count truncated to 1024
BIOS without this extension would return count modulo 1024
SWBIOS is a TSR by Ontrack Computer Systems; Disk Manager also supports
these calls
SeeAlso: AH=EEh
----------14---------------------------------
INT 14 - SERIAL I/O- Digiboard DigiCHANNEL PC/X* Extender INT 14 (XAPCM232.SYS)
Note: the installation check for this driver is to determine whether the
"~DOSXAM~" character device exists
----------1400-------------------------------
INT 14 - SERIAL - INITIALIZE PORT
AH = 00h
AL = port parameters
bits 7-5 data rate (110,150,300,600,1200,2400,4800,9600 bps)
bits 4-3 parity (00 or 10 = none, 01 = odd, 11 = even)
bit 2 stop bits (set = 2, clear = 1)
bits 1-0 data bits (00 = 5, 01 = 6, 10 = 7, 11 = 8)
DX = port number (00h-03h) (04h-43h for Digiboard XAPCM232.SYS)
Return: AH = line status (see AH=03h)
FFh if error on Digiboard XAPCM232.SYS
AL = modem status (see AH=03h)
Notes: default handler is at F000h:E739h in IBM PC and 100% compatible BIOSes
since the PCjr supports a maximum of 4800 bps, attempting to set 9600
bps will result in 4800 bps
various network and serial-port drivers support the standard BIOS
functions with interrupt-driven I/O instead of the BIOS's polled I/O
SeeAlso: AH=04h"SERIAL",AH=04h"MultiDOS",AH=05h"SERIAL",AX=8000h"ARTICOM"
SeeAlso: AH=81h"COMM-DRV",AH=82h"COURIERS",AH=8Ch
----------1400-------------------------------
INT 14 - FOSSIL (Fido/Opus/Seadog Standard Interface Level) - INITIALIZE
AH = 00h
AL = initializing parameters
7 - 6 - 5 4 - 3 2 1 - 0
-BAUD RATE- PARITY STOP WORD
BITS LENGTH
000 19200 bd 00 none 0: 1 00: 5
001 38400 bd 01 odd 1: 2 01: 6
010 300 bd 11 even 10: 7
011 600 bd 11: 8
100 1200 bd
101 2400 bd
110 4800 bd
111 9600 bd (4800 on PCjr)
DX = port number (0-3 or FFh if only performing non-I/O setup)
Return: AH = RS-232 status code bits
0: RDA - input data is available in buffer
1: OVRN - data has been lost
5: THRE - room is available in output buffer
6: TSRE - output buffer empty
AL = modem status bits
3: always 1
7: DCD - carrier detect
SeeAlso: AH=05h"FOSSIL",AH=81h"COMM-DRV",AH=82h"COURIERS"
----------1400-------------------------------
INT 14 - MBBIOS - INITIALIZE PORT
AH = 00h
AL = port parameters
bits 7-5 data rate
(normally 110,150,300,600,1200,2400,4800,9600 bps;
9600,14400,19200,28800,38400,57600,115200,330400 bps
if the high-speed option is set)
bits 4-3 parity (00 or 10 = none, 01 = odd, 11 = even)
bit 2 stop bits (set = 2, clear = 1)
bits 1-0 data bits (00 = 5, 01 = 6, 10 = 7, 11 = 8)
DX = port number
Return: AH = line status (see AH=03h)
AL = modem status (see AH=03h)
Note: MBBIOS was written by H. Roy Engehausen
SeeAlso: AH=04h"MBBIOS",AH=05h"MBBIOS"
----------1401-------------------------------
INT 14 - SERIAL - WRITE CHARACTER TO PORT
AH = 01h
AL = character to write
DX = port number (00h-03h) (04h-43h for Digiboard XAPCM232.SYS)
Return: AH bit 7 clear if successful
AH bit 7 set on error
AH bits 6-0 = port status (see AH=03h)
Note: various network and serial-port drivers support the standard BIOS
functions with interrupt-driven I/O instead of the BIOS's polled I/O
SeeAlso: AH=02h,AH=0Bh"FOSSIL",AX=8000h"ARTICOM",AH=89h
----------1402-------------------------------
INT 14 - SERIAL - READ CHARACTER FROM PORT
AH = 02h
AL = 00h (ArtiCom)
DX = port number (00h-03h (04h-43h for Digiboard XAPCM232.SYS))
Return: AH = line status (see AH=03h)
AL = received character if AH bit 7 clear
Notes: will timeout if DSR is not asserted, even if function 03h returns
data ready
various network and serial-port drivers support the standard BIOS
functions with interrupt-driven I/O instead of the BIOS's polled I/O
SeeAlso: AH=01h,AH=02h"FOSSIL",AH=84h,AH=FCh
----------1402-------------------------------
INT 14 - FOSSIL - RECEIVE CHARACTER WITH WAIT
AH = 02h
DX = port number (0-3)
Return: AL = character received
AH = 00h
SeeAlso: AH=01h,AH=02h"SERIAL"
----------1403-------------------------------
INT 14 - SERIAL - GET PORT STATUS
AH = 03h
AL = 00h (ArtiCom)
DX = port number (00h-03h) (04h-43h for Digiboard XAPCM232.SYS)
Return: AH = line status
bit 7: timeout
6: transmit shift register empty
5: transmit holding register empty
4: break detected
3: framing error
2: parity error
1: overrun error
0: receive data ready
AL = modem status
bit 7: carrier detect
6: ring indicator
5: data set ready
4: clear to send
3: delta carrier detect
2: trailing edge of ring indicator
1: delta data set ready
0: delta clear to send
AX = 9E00h if disconnected (ArtiCom)
SeeAlso: AH=00h,AH=07h"MultiDOS",AX=8000h"ARTICOM",AH=81h"COURIERS",AX=FD02h
----------1404-------------------------------
INT 14 - SERIAL I/O - EXTENDED INITIALIZE (CONVERTIBLE,PS)
AH = 04h
AL = break status
00h if break
01h if no break
BH = parity
00h no parity
01h odd parity
02h even parity
03h stick parity odd
04h stick parity even
BL = number of stop bits
00h one stop bit
01h two stop bits (1.5 if 5 bit word length)
CH = word length
00h 5 bits
01h 6 bits
02h 7 bits
03h 8 bits
CL = bps rate
00h 110
01h 150
02h 300
03h 600
04h 1200
05h 2400
06h 4800
07h 9600
08h 19200
DX = port number
Return: AX = port status code (see AH=00h)
SeeAlso: AH=00h,AH=1Eh,AX=8000h"ARTICOM"
----------1404-------------------------------
INT 14 - FOSSIL - INITIALIZE DRIVER
AH = 04h
DX = port number
optionally BX=4F50h
ES:CX -> byte to be set upon ^C
Return: AX = 1954h (if successful)
BL = maximum function number supported (excluding 7Eh and above)
BH = revision of FOSSIL supported
DTR is raised
Note: the word at offset 6 in the interrupt handler contains 1954h, and the
following byte contains the maximum function number supported
SeeAlso: AH=05h"FOSSIL",AH=1Ch
----------1404-------------------------------
INT 14 - MultiDOS Plus IODRV - INITIALIZE PORT
AH = 04h
Return: port initialized; if Hayes-compatible modem, a connection has been
established
Note: the port number is stored at offset BEh in the Task Control Block
(see INT 15/AH=13h"MultiDOS")
SeeAlso: AH=00h,AH=05h"MultiDOS",AH=20h"MultiDOS",INT 15/AH=13h"MultiDOS"
----------1404-------------------------------
INT 14 - Digiboard DigiCHANNEL PC/X* - CHANGE BAUD RATE
AH = 04h
AL = initializing parameters
bits 7-5 unused
bits 4,3: parity (00 none, 01 odd, 11 even)
bit 2: stop bits (0 = one, 1 = two)
bits 1,0: data bits (00 = five, 01 = six, 10 = seven, 11 = eight)
BX = baud rate
DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
Return: AH = status
00h successful
FFh error
SeeAlso: AH=05h"Digiboard"
----------1404-------------------------------
INT 14 - MBBIOS - INQUIRY
AH = 04h
Return: AH = AAh
AL = 55h
SeeAlso: AH=00h"MBBIOS",AH=09h"MBBIOS"
----------1405-------------------------------
INT 14 - SERIAL I/O - EXTENDED COMMUNICATION PORT CONTROL (CONVERTIBLE,PS)
AH = 05h
AL = 00h read modem control register
Return: BL = modem control register (see below)
AH = status
AL = 01h write modem control register
BL = modem control register
bit 0: data terminal ready
bit 1: request to send
bit 2: OUT1
bit 3: OUT2
bit 4: LOOP
bits 5-7 reserved
Return: AX = status
DX = port number
Note: also supported by ArtiCom
SeeAlso: AH=00h,AH=1Fh,AX=8000h"ARTICOM"
----------1405-------------------------------
INT 14 - FOSSIL - DEINITIALIZE DRIVER
AH = 05h
DX = port number
Return: none
DTR is not affected
SeeAlso: AH=00h,AH=04h"FOSSIL",AH=1Dh,AH=8Dh
----------1405-------------------------------
INT 14 - MultiDOS Plus IODRV - READ CHARACTER FROM PORT
AH = 05h
AL = timeout in seconds (00h = never)
Return: AL = status
00h successful
AH = character read
01h read error
02h timed out
other modem status (CTS, DSR) changed
Note: the port number is stored at offset BEh in the Task Control Block
SeeAlso: AH=02h,AH=04h"MultiDOS",AH=06h"MultiDOS",AH=22h"MultiDOS"
SeeAlso: INT 15/AH=13h"MultiDOS"
----------1405-------------------------------
INT 14 - Digiboard DigiCHANNEL PC/X* - CHANGE PROTOCOL
AH = 05h
AL = protocol
bits 7-4 unused
bit 3: RTS/CTS
bit 2: DSR
bits 1,0: XON/XOFF
BH = new XOFF character (00h = current)
BL = new XON character (00h = current)
DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
Return: AH = status
00h successful
FFh error
SeeAlso: AH=04h"Digiboard"
----------1405-------------------------------
INT 14 - MBBIOS - DROP DTR AND RTS
AH = 05h
DX = port number
Return: none
SeeAlso: AH=00h"MBBIOS",AH=06h"MBBIOS",AH=06h"FOSSIL"
----------1406-------------------------------
INT 14 - FOSSIL - RAISE/LOWER DTR
AH = 06h
DX = port
AL = DTR state to be set
00h = lower
01h = raise
SeeAlso: AH=05h"MBBIOS",AH=1Ah
----------1406-------------------------------
INT 14 - MultiDOS Plus IODRV - WRITE CHARACTER TO PORT
AH = 06h
AL = character
Return: AL = status
00h successful
Notes: the port number is stored at offset BEh in the Task Control Block
if output queue is full, the calling task is blocked until the
character can be stored
SeeAlso: AH=01h,AH=04h"MultiDOS",AH=05h"MultiDOS",AH=21h"MultiDOS"
SeeAlso: INT 15/AH=13h"MultiDOS"
----------1406-------------------------------
INT 14 - MBBIOS - RAISE DTR AND RTS
AH = 06h
DX = port number
Return: none
SeeAlso: AH=05h"MBBIOS",AH=07h"MBBIOS"
----------1407-------------------------------
INT 14 - FOSSIL - RETURN TIMER TICK PARAMETERS
AH = 07h
Return: AL = timer tick interrupt number
AH = ticks per second on interrupt number in AL
DX = approximate number of milliseconds per tick
SeeAlso: AH=16h
----------1407-------------------------------
INT 14 - MultiDOS Plus IODRV - GET PORT STATUS
AH = 07h
Return: CL = modem status (see AH=03h)
CH = character at head of input queue (if any)
DX = number of characters in input queue
Note: the port number is stored at offset BEh in the Task Control Block
SeeAlso: AH=03h,AH=05h"MultiDOS",AH=08h"MultiDOS",AH=09h"MultiDOS"
SeeAlso: AH=23h"MultiDOS",INT 15/AH=13h"MultiDOS"
----------1407-------------------------------
INT 14 - MBBIOS - SEND BREAK
AH = 07h
DX = port number
Return: none
SeeAlso: AH=06h"MBBIOS"
----------1408-------------------------------
INT 14 - FOSSIL - FLUSH OUTPUT BUFFER WAITING TILL ALL OUTPUT IS DONE
AH = 08h
DX = port number
SeeAlso: AH=09h"FOSSIL"
----------1408-------------------------------
INT 14 - MultiDOS Plus 4.0 IODRV - GET AND RESET PORT LINE STATUS
AH = 08h
Return: AL = line status (see AH=03h)
AH destroyed
Notes: the port number is stored at offset BEh in the Task Control Block
on every line status change, the line status is ORed with the line
status accumulator; this function returns the accumulator and clears
it
SeeAlso: AH=03h,AH=04h"MultiDOS",AH=07h"MultiDOS",INT 15/AH=13h"MultiDOS"
----------1408-------------------------------
INT 14 - Digiboard DigiCHANNEL PC/X* - ALTERNATE STATUS CHECK
AH = 08h
DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
Return: AH = RS232 status bits (see AH=03h)
ZF set if no characters queued
ZF clear if character available
AL = next character
SeeAlso: AH=03h,AH=09h"Digiboard"
----------1408-------------------------------
INT 14 - MBBIOS - NON-DESTRUCTIVE READ
AH = 08h
DX = port number
Return: AL = character
AH = status (see AH=02h)
SeeAlso: AH=0Bh"MBBIOS",AH=0Ch"FOSSIL"
----------1409-------------------------------
INT 14 - FOSSIL - PURGE OUTPUT BUFFER THROWING AWAY ALL PENDING OUTPUT
AH = 09h
DX = port number
SeeAlso: AH=08h"FOSSIL",AH=0Ah"FOSSIL",AH=88h
----------1409-------------------------------
INT 14 - MultiDOS Plus IODRV - RESET PORT STATUS
AH = 09h
Return: modem status byte cleared
Note: the port number is stored at offset BEh in the Task Control Block
SeeAlso: AH=04h"MultiDOS",AH=07h"MultiDOS",INT 15/AH=13h"MultiDOS"
----------1409-------------------------------
INT 14 - Digiboard DigiCHANNEL PC/X* - CLEAR BUFFERS
AH = 09h
DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
Return: AH = status
00h successful
FFh error
SeeAlso: AH=08h"Digiboard",AH=0Ah"Digiboard",AH=10h"Digiboard"
----------1409-------------------------------
INT 14 - MBBIOS - GET/SET OPTIONS
AH = 09h
AL = option byte
00000001b - Transmit Buffering Enabled
00000101b - Hardware Handshaking Enabled
00100000b - High Speed Option Enabled
DX = port number???
Return: AL = old option byte
SeeAlso: AH=04h"MBBIOS",AH=10h"FOSSIL"
----------140A-------------------------------
INT 14 - FOSSIL - PURGE INPUT BUFFER THROWING AWAY ALL PENDING INPUT
AH = 0Ah
DX = port number
SeeAlso: AH=09h"FOSSIL",AH=85h
----------140A-------------------------------
INT 14 - Digiboard DigiCHANNEL PC/X* - INPUT QUEUE CHECK
AH = 0Ah
DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
Return: AX = number of characters available in buffer
SeeAlso: AH=09h"Digiboard",AH=0Dh"Digiboard"
----------140A-------------------------------
INT 14 - MBBIOS - WRITE BUFFER
AH = 0Ah
CX = count
ES:DI -> buffer
Return: AX = status (see AH=03h)
DI = is updated
CX = unsent character count
SeeAlso: AH=0Bh"MBBIOS",AH=19h"FOSSIL"
----------140B-------------------------------
INT 14 - FOSSIL - TRANSMIT NO WAIT
AH = 0Bh
AL = character
DX = port number
Return: AX = 0000h character not accepted
= 0001h character accepted
SeeAlso: AH=01h
----------140B-------------------------------
INT 14 - MBBIOS - READ BUFFER
AH = 0Bh
CX = size of buffer
ES:DI -> buffer
Return: AH = LSR
AL = MSR
CX = count of characters
DI = is updated
SeeAlso: AH=08h"MBBIOS",AH=0Ah"MBBIOS",AH=18h"FOSSIL"
----------140C-------------------------------
INT 14 - FOSSIL - NON-DESTRUCTIVE READ AHEAD
AH = 0Ch
DX = port number
Return: AX = FFFFh character not available
AX = 00xxh character xx available
SeeAlso: AH=08h"MBBIOS",AH=20h"FOSSIL"
----------140D-------------------------------
INT 14 - FOSSIL - KEYBOARD READ WITHOUT WAIT
AH = 0Dh
Return: AX = FFFFh character not available
= xxyyh standard IBM-style scan code
SeeAlso: AH=0Eh
----------140D-------------------------------
INT 14 - Digiboard DigiCHANNEL PC/X* - GET POINTER TO CH_KEY_RDY FLAG
AH = 0Dh
DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
Return: ES:BX -> CH_KEY_RDY flag
SeeAlso: AH=0Ah"Digiboard"
Values for CH_KEY_RDY flag:
00h receive buffer empty
FFh characters available
----------140E-------------------------------
INT 14 - FOSSIL - KEYBOARD READ WITH WAIT
AH = 0Eh
Return: AX = xxyyh standard IBM-style scan code
SeeAlso: AH=0Dh"FOSSIL"
----------140E-------------------------------
INT 14 - Digiboard DigiCHANNEL PC/X* - WRITE STRING
AH = 0EH
CX = number of characters to write
ES:BX -> string
DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
Return: AX = number of characters actually written
ZF clear if successful
ZF set on error
SeeAlso: AH=0Fh"Digiboard"
----------140F-------------------------------
INT 14 - FOSSIL - ENABLE/DISABLE FLOW CONTROL
AH = 0Fh
AL = bit mask describing flow control requested
0: xon/xoff on transmit (watch for xoff while sending)
1: CTS/RTS (CTS on transmit/RTS on receive)
2: reserved
3: xon/xoff on receive (send xoff when buffer near full)
4-7: all 1
DX = port number
SeeAlso: AH=09h"MBBIOS",AH=10h"FOSSIL"
----------140F-------------------------------
INT 14 - Digiboard DigiCHANNEL PC/X* - READ STRING
AH = 0Fh
CX = number of characters to read
ES:BX -> buffer
DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
Return: AX = number of characters read
ZF clear if successful
ZF set on error (line status or wrong number of characters)
SeeAlso: AH=0Eh"Digiboard"
----------1410-------------------------------
INT 14 - FOSSIL - EXTENDED ^C/^K CHECKING AND TRANSMIT ON/OFF
AH = 10h
AL = bit mask
0: enable/disable ^C/^K checking
1: enable/disable the transmitter
DX = port number
SeeAlso: AH=0Fh"FOSSIL"
----------1410-------------------------------
INT 14 - Digiboard DigiCHANNEL PC/X* - CLEAR RECEIVE BUFFER
AH = 10h
DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
Return: AH = status
00h successful
FFh error
SeeAlso: AH=09h"Digiboard",AH=11h"Digiboard"
----------1411-------------------------------
INT 14 - FOSSIL - SET CURRENT CURSOR LOCATION
AH = 11h
DH = row
DL = column
Note: this is the same as INT 10/AH=02h
SeeAlso: AH=12h"FOSSIL"
----------1411-------------------------------
INT 14 - Digiboard DigiCHANNEL PC/X* - CLEAR TRANSMIT BUFFER
AH = 11h
DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
Return: AH = status
00h successful
FFh error
SeeAlso: AH=09h"Digiboard",AH=10h"Digiboard"
----------1412-------------------------------
INT 14 - FOSSIL - READ CURRENT CURSOR LOCATION
AH = 12h
Return: DH = row
DL = column
Note: this is the same as INT 10/AH=03h
SeeAlso: AH=11h"FOSSIL"
----------1412-------------------------------
INT 14 - Digiboard DigiCHANNEL PC/X* - GET TRANSMIT BUFFER FREE SPACE
AH = 12h
DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
Return: AX = number of bytes free
SeeAlso: AH=0Ah"Digiboard"
----------1413-------------------------------
INT 14 - FOSSIL - SINGLE CHARACTER ANSI WRITE TO SCREEN
AH = 13h
AL = character
Note: should not be called if it is unsafe to call DOS
SeeAlso: AH=15h
----------1414-------------------------------
INT 14 - FOSSIL - ENABLE OR DISABLE WATCHDOG PROCESSING
AH = 14h
AL = 01h enable watchdog
00h disable watchdog
DX = port number
----------1415-------------------------------
INT 14 - FOSSIL - WRITE CHARACTER TO SCREEN USING BIOS SUPPORT ROUTINES
AH = 15h
AL = character
SeeAlso: AH=13h
----------1416-------------------------------
INT 14 - FOSSIL - INSERT/DELETE FUNCTION FROM TIMER TICK CHAIN
AH = 16h
AL = function
00h = delete
01h = add
ES:DX -> routine to call
Return: AX = status
0000h successful
0001h unsuccessful
SeeAlso: AH=07h"FOSSIL"
----------1416-------------------------------
INT 14 - Digiboard DigiCHANNEL PC/X* - CCB COMMAND
AH = 16h
AL = CCB command number (see below)
BL = byte 2
BH = byte 3
CL = byte 1 (for all channel functions except 4Eh and 4Fh)
DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
Return: AH = status
00h successful
FFh error
SeeAlso: AH=18h"Digiboard"
Values for CCB command number:
40h Set Receive Mid Water Mark
41h Set Receive High Water Mark
42h Flush Receive Buffer
43h Flush Transmit Buffer
44h Transmit Pause
45h Transmit Resume
46h Set Interrupt to Host Mask
47h Set Baud, Data, Stop and Parity
48h Send Break
49h Set Modem Lines
4Ah Set Break Count
4Bh Set Handshake
4Ch Set Xon/Xoff Characters
4Dh Set Transmit Mid Water Mark
4Eh IRQ Polling Timer to Host
4Fh Buffer Set All
50h Port On
51h Port Off
52h Receive Pause
53h Special Character Interrupt
54h RS-422 Enable
----------1417-------------------------------
INT 14 - FOSSIL - REBOOT SYSTEM
AH = 17h
AL = method
00h = cold boot
01h = warm boot
SeeAlso: INT 19
----------1418-------------------------------
INT 14 - FOSSIL - READ BLOCK
AH = 18h
CX = maximum number of characters to transfer
DX = port number
ES:DI -> user buffer
Return: AX = number of characters transferred
SeeAlso: AH=19h"FOSSIL",AH=83h"COURIERS",AX=FF02h,INT 6B/AX=0100h
----------1418-------------------------------
INT 14 - Digiboard DigiCHANNEL PC/X* - SEND BIOS COMMAND
AH = 18h
ES:BX -> 16-byte command string
DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
Return: AH = status
00h successful
80h timeout
AL = mailbox status
00h no errors
8Xh BIOS error
ES:BX buffer filled in with mailbox string
ZF clear if no errors
ZF set if either status byte contains an error code
SeeAlso: AH=16h"Digiboard"
----------1419-------------------------------
INT 14 - FOSSIL - WRITE BLOCK
AH = 19h
CX = maximum number of characters to transfer
DX = port number
ES:DI -> user buffer
Return: AX = number of characters transferred
SeeAlso: AH=18h"FOSSIL",AH=86h,INT 6B/AX=0000h
----------1419-------------------------------
INT 14 - Digiboard DigiCHANNEL PC/X* - SPECIAL CHARACTER INTERRUPT
AH = 19h
BL = flag
00h disable special character interrupt
FFh enable interrupt
DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
Return: AH = status
00h successful
FFh failed
SeeAlso: AH=1Ah"Digiboard"
----------141A-------------------------------
INT 14 - FOSSIL - BREAK BEGIN OR END
AH = 1Ah
AL = 00h stop sending 'break'
01h start sending 'break'
DX = port number
SeeAlso: AH=06h"FOSSIL",AH=8Ah,AH=FAh
----------141A-------------------------------
INT 14 - Digiboard DigiCHANNEL PC/X - SPECIAL CHARACTER FLAG/COUNTER
AH = 1Ah
BX = subfunction
00h return pointer to special character flag byte
01h return pointer to special character counter word
DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
Return: ES:BX -> special character flag or counter
Notes: flag is FFh if one or more special characters are in the receive
buffer; it is 00h and the counter is invalid if no special characters
are in the receive buffer
counter (if valid) contains the number of characters in the receive
buffer up to and including the last-received special character
----------141B-------------------------------
INT 14 - FOSSIL - RETURN INFORMATION ABOUT THE DRIVER
AH = 1Bh
DX = port number
CX = size of user buffer
ES:DI -> user buffer for driver info (see below)
Return: AX = number of characters transferred
CX = 3058h ("0X") (X00 FOSSIL only)
DX = 2030h (" 0") (X00 FOSSIL only)
Format of driver info:
Offset Size Description
00h WORD size of structure in bytes
02h BYTE FOSSIL spec driver conforms to
03h BYTE revision level of this specific driver
04h DWORD pointer to ASCIZ identification string
08h WORD size of the input buffer
0Ah WORD number of bytes left in buffer
0Ch WORD size of the output buffer
0Eh WORD number of bytes left in buffer
10h BYTE width of screen
11h BYTE length of screen
12h BYTE actual baud rate, computer to modem
----------141C-------------------------------
INT 14 - X00 FOSSIL - ACTIVATE PORT
AH = 1Ch
DX = port number
Return: AX = 1954h if successful
BL = maximum function number supported (not including 7Eh and above)
BH = revision of FOSSIL specification supported
Note: this is a duplicate of AH=04h, so that AH=04h may be made compatible
with the PS/2 BIOS in a future release
SeeAlso: AH=04h"FOSSIL",AH=1Dh
----------141D-------------------------------
INT 14 - X00 FOSSIL - DEACTIVATE PORT
AH = 1Dh
DX = port number
Return: none
Notes: this is a duplicate of AH=05h, so that AH=05h may be made compatible
with the PS/2 BIOS in a future release
ignored if the port was never activated with AH=04h or AH=1Ch
SeeAlso: AH=05h"FOSSIL",AH=1Ch
----------141E-------------------------------
INT 14 - X00 FOSSIL - EXTENDED LINE CONTROL INITIALIZATION
AH = 1Eh
AL = break status
00h if break
01h if no break
BH = parity
00h no parity
01h odd parity
02h even parity
03h stick parity odd
04h stick parity even
BL = number of stop bits
00h one stop bit
01h two stop bits (1.5 if 5 bit word length)
CH = word length
00h 5 bits
01h 6 bits
02h 7 bits
03h 8 bits
CL = bps rate
00h 110
01h 150
02h 300
03h 600
04h 1200
05h 2400
06h 4800
07h 9600
08h 19200
DX = port number
Return: AX = port status code (see AH=00h)
Notes: this function is intended to exactly emulate the PS/2 BIOS AH=04h call
if the port was locked at X00 load time, the appropriate parameters are
ignored
SeeAlso: AH=00h,AH=04h"SERIAL I/O"
----------141F-------------------------------
INT 14 - X00 FOSSIL - EXTENDED SERIAL PORT STATUS/CONTROL
AH = 1Fh
AL = 00h read modem control register
Return: BL = modem control register (see below)
AH = status
AL = 01h write modem control register
BL = modem control register
bit 0: data terminal ready
bit 1: request to send
bit 2: OUT1
bit 3: OUT2 (interrupts) enabled
bit 4: LOOP
bits 5-7 reserved
Return: AX = status
DX = port number
SeeAlso: AH=00h,AH=05h"SERIAL I/O"
Notes: this function is intended to exactly emulate the PS/2 BIOS AH=05h call
X00 forces BL bit 3 set (interrupts cannot be disabled)
----------1420-------------------------------
INT 14 - X00 FOSSIL - DESTRUCTIVE READ WITH NO WAIT
AH = 20h
DX = port number
Return: AH = 00h if character was available
AL = next character (removed from receive buffer)
AX = FFFFh if no character available
SeeAlso: AH=0Ch,AH=21h"X00"
----------1420-------------------------------
INT 14 - Alloy MW386 - ATTACH LOGICAL COMMUNICATIONS PORT TO PHYSICAL PORT
AH = 20h
AL = logical port (01h COM1, 02h COM2)
DX = physical port number
Return: AX = status
0000h successful
FFFFh failed
SeeAlso: AH=21h"Alloy",AH=22h"Alloy",AH=23h"Alloy",INT 17/AH=8Bh"Alloy"
----------1420-------------------------------
INT 14 - MultiDOS Plus - INITIALIZE PORT
AH = 20h
AL = port parameters (see AH=00h"SERIAL")
DX = port number (0-3)
Return: AH = status
00h successful
41h no such port
64h monitor mode already active
SeeAlso: AH=00h"SERIAL",AH=04h"MultiDOS",AH=21h"MultiDOS",AH=23h"MultiDOS"
----------1421-------------------------------
INT 14 - X00 FOSSIL - STUFF RECEIVE BUFFER
AH = 21h
AL = character
DX = port number
Notes: the given character is inserted at the end of the receive buffer as if
it had just arrived from the serial port; all normal receive
processing (XON/XOFF, ^C/^K) is performed on the character
fully re-entrant
SeeAlso: AH=20h"X00"
----------1421-------------------------------
INT 14 - Alloy MW386 v1.x only - RELEASE PHYSICAL COMMUNICATIONS PORT
AH = 21h
DX = physical port number
Return: AX = status
0000h successful
FFFFh failed
SeeAlso: AH=20h"Alloy",AH=22h"Alloy"
----------1421-------------------------------
INT 14 - MultiDOS Plus - TRANSMIT CHARACTER
AH = 21h
AL = character to send
DX = port number
Return: AH = status
00h successful
39h no DSR or CTS
3Ch no DSR
3Bh no CTS
41h no such port
42h monitor mode not active
97h timed out
Note: monitor mode must have been turned on with AH=24h before calling
SeeAlso: AH=20h"MultiDOS",AH=22h"MultiDOS",AH=24h"MultiDOS"
----------1422-------------------------------
INT 14 - Alloy MW386 v2+ - RELEASE LOGICAL COMMUNICATIONS PORT
AH = 22h
AL = logical port (01h COM1, 02h COM2)
Return: AX = status (0000h successful)
SeeAlso: AH=20h"Alloy",AH=21h"Alloy"
----------1422-------------------------------
INT 14 - MultiDOS Plus - RECEIVE CHARACTER
AH = 22h
DX = port number
Return: AH = status (see also AH=21h"MultiDOS")
00h successful
AL = character
3Dh framing and parity error
3Eh overrun error
3Fh framing error
40h parity error
96h ring buffer overflow
Note: if no character is available, this function waits until a character
arrives or an implementation-dependent timeout elapses
SeeAlso: AH=20h"MultiDOS",AH=21h"MultiDOS",AH=27h
----------1423-------------------------------
INT 14 - Alloy MW386 v2+ - GET PORT NUMBER FROM LOGICAL PORT ID
AH = 23h
AL = logical port (01h COM1, 02h COM2)
DH = user ID
DL = process ID (DH,DL both FFh for current task)
Return: AL = MW386 port mode
bit 0: port is shared (spooler only)
1: port is spooled instead of direct (spooler only)
2: port is assigned as logical COM device, not in spooler
3: port is free
CX = MW386 port number
DH = owner's user ID
DL = owner's task ID
SeeAlso: AH=20h"Alloy",INT 17/AH=8Bh"Alloy"
----------1423-------------------------------
INT 14 - MultiDOS Plus - GET PORT STATUS
AH = 23h
DX = port number
Return: AH = line status (see AH=03h)
AL = modem status (see AH=03h)
SeeAlso: AH=03h,AH=07h"MultiDOS",AH=20h"MultiDOS"
----------1424-------------------------------
INT 14 - Alloy MW386 v2+ - CHANGE PHYSICAL PORT PARAMETERS
AH = 24h
CX = physical I/O port number
DS:DX -> configuration table (see below)
Return: AH = 00h
Note: invalid port numbers are merely ignored
SeeAlso: INT 17/AH=96h
Format of configuration table:
Offset Size Description
00h BYTE baud rate
00h 38400
01h 19200
02h 9600
03h 7200
04h 4800
05h 3600
06h 2400
07h 2000
08h 1200
09h 600
0Ah 300
0Bh 150
0Ch 134.5
01h BYTE data bits (00h=5, 01h=6, 02h=7, 03h=8)
02h BYTE parity (00h none, 01h odd, 02h even)
03h BYTE stop bits (00h=1, 01h=2)
04h BYTE receive flow control
00h none, 01h XON/XOFF, 02h DTR/DSR, 03h XPC, 04h RTS/CTS
05h BYTE transmit flow control (as for receive)
----------1424-------------------------------
INT 14 - MultiDOS Plus - SET MONITOR MODE
AH = 24h
AL = port status storage
00h single status for entire receive buffer
01h separate status kept for each byte in receive buffer
DX = port number
Return: AH = status
00h successful
3Ah invalid status storage specified
41h no such port
64h monitor mode already active
Note: in monitor mode, MultiDOS redirects all BIOS video output to a serial
port
SeeAlso: AH=20h"MultiDOS",AH=25h
----------1425-------------------------------
INT 14 - MultiDOS Plus - CLEAR BUFFERS
AH = 25h
AL = function
00h only clear buffers
01h clear buffers and deactivate
DX = port number
Return: AH = status
00h successful
3Ah invalid function
41h no such port
42h monitor mode not active
SeeAlso: AH=20h"MultiDOS",AH=24h"MultiDOS"
----------1427-------------------------------
INT 14 - MultiDOS Plus - GET BUFFER CHARACTER COUNT
AH = 27h
DX = port number
Return: AH = status
00h successful
41h no such port
42h monitor mode not active
AL = number of characters in receive buffer
----------147E-------------------------------
INT 14 - FOSSIL - INSTALL AN EXTERNAL APPLICATION FUNCTION
AH = 7Eh
AL = code assigned to external application (80h-BFh)
80h reserved for communications FOSSIL
81h video FOSSIL
82h reserved for keyboard FOSSIL
83h reserved for system FOSSIL
ES:DX -> entry point
Return: AX = 1954h
BL = code assigned to application (same as input AL)
DH = 00h failed
01h successful
SeeAlso: AH=7Fh,AH=80h"FOSSIL",AX=8100h,AH=82h"FOSSIL",AH=83h"FOSSIL"
----------147F-------------------------------
INT 14 - FOSSIL - REMOVE AN EXTERNAL APPLICATION FUNCTION
AH = 7Fh
AL = code assigned to external application
ES:DX -> entry point
Return: AX = 1954h
BL = code assigned to application (same as input AL)
DH = 00h failed
01h successful
SeeAlso: AH=7Eh
----------1480-------------------------------
INT 14 - COMMUNICATIONS FOSSIL
AH = 80h
SeeAlso: AH=7Eh
----------1480-------------------------------
INT 14 - COURIERS.COM - INSTALLATION CHECK
AH = 80h
Return: AH = E8h if loaded
Note: COURIERS is a TSR utility by PC Magazine
----------148000-----------------------------
INT 14 - ARTICOM - INSTALLATION CHECK
AX = 8000h
Return: AL = FFh if installed
BH = major version
BL = minor version
Program: ArtiCom is an asynchronous communications driver by Artisoft which
works on top of NetBIOS and allows modem/serial-port sharing by
programs using INT 14 for serial I/O.
Note: ArtiCom supports 32 simultaneous COM ports using multiport cars and
drivers
SeeAlso: AH=00h,AH=01h,AH=02h,AH=03h,AH=04h,AH=05h,AX=8001h,AX=8002h
----------148001-----------------------------
INT 14 - ARTICOM - UNLOAD ASYNCHRONOUS REDIRECTOR FROM MEMORY
AX = 8001h
Return: AX = error code, if error (see AX=8003h)
SeeAlso: AX=8000h,AX=8002h,AX=8003h
----------148002-----------------------------
INT 14 - ARTICOM - GET ASYNCHRONOUS REDIRECTOR STATUS
AX = 8002h
ES:DI -> buffer for redirector status structure (see below)
Return: AX = error code, if error (see AX=8003h)
SeeAlso: AX=8000h,AX=8003h
Format of redirector status:
Offset Size Description
00h WORD redirector major and minor version numbers
02h WORD redirectable ports found
04h WORD redirectable ports + local ports found
06h WORD redirector internal buffer size
08h WORD maximum servers maintained
0Ah WORD number of adapters found
----------148003-----------------------------
INT 14 - ARTICOM - TRANSLATE ERROR CODE TO ERROR STRING
AX = 8003h
CX = error number to translate
Return: ES:DI -> ASCIZ error text or NULL if can't translate.
SeeAlso: AX=8000h
Values for error codes:
00h "No error"
01h "An invalid port number was specified"
02h "Port is already redirected"
03h "Too many ports redirected"
04h "Cannot locate the server"
05h "Server is busy"
06h "Access denied"
07h "Resource in use"
08h "Resource in use - request queued"
09h "No such resource"
0Ah "Invalid username/password pair"
0Bh "Noncompatible version number"
0Ch "Can't remove from memory"
0Dh "Bad NETBIOS adapter number"
0Eh "No more entries in list"
0Fh "Resource is not available at this time"
10h "Invalid value to INT 14 call"
----------148004-----------------------------
INT 14 - ARTICOM - ATTACH ASYNCHRONOUS RESOURCE
AX = 8004h
DX = port to redirect (COM1=0, COM2=1, ...)
CH = attach type
CL = adapter to use for attach, 0FFh to search all
ES:DI -> attachment structure (see below)
Return: AX = error code, if error (see AX=8003h)
Note: The wildcard '*' is supported in the server and resource fields. If
wild cards are used then the first matching available server is
attached.
SeeAlso: AX=8000h,AX=8003h,AX=8005h
Format of attachment structure:
Offset Size Description
00h 16 BYTEs server to look for attach
10h 16 BYTEs attach to resource name
20h 16 BYTEs username for attach
30h 16 BYTEs password for username or resource
40h BYTE attach type
00h normal
01h queue if resource is in use (not yet supported in v1.00)
----------148005-----------------------------
INT 14 - ARTICOM - DETACH ASYNCHRONOUS RESOURCE
AX = 8005h
DX = port to detach (COM1=0, COM2=1, ...)
Return: AX = error code, if error (see AX=8003h)
Note: only a previously attached resource can be detached
SeeAlso: AX=8000h,AX=8003h,AX=8004h
----------148006-----------------------------
INT 14 - ARTICOM - GET RESOURCE INFORMATION
AX = 8006h
BX = remote port (COM1=0, COM2=1, ...)
CL = adapter number, FFH to try all adapters
ES:DI -> resource information structure (see below)
DS:SI -> 16 byte server name. See note.
Return: AX = error code, if error (see AX=8003h)
BX = next remote port, recall to get next resource info
Note: Wild cards supported in both the resource field and server name
string DS:SI. If wild cards used then first matching available
resource information is searched. Set resource field to 0FFh to
return all resources.
SeeAlso: AX=8000h,AX=8002h,AX=8003h,AX=8007h
Format of resource information structure:
Offset Size Description
00h BYTE 00h = free, else used
01h 16 BYTEs resource name
11h 16 BYTEs username of resource user
21h WORD amount of time used
23h WORD amount of time remaining
53h 48 BYTEs description of resource
93h 64 BYTEs initialization string for modem
B3h 32 BYTEs dial string for modem
D3h 32 BYTEs hang-up string for modem
----------148007-----------------------------
INT 14 - ARTICOM - GET REDIRECTED PORT INFORMATION
AX = 8007h
DX = port index (COM1=0, COM2=1, ...)
ES:DI -> buffer for port information structure (see below)
Return: CF clear if redirection info returned and port is redirected
CF set if not a redirected port
AX = error code, if error (see AX=8003h)
SeeAlso: AX=8000h,AX=8003h,AX=8006h,AX=8008h
Format of port information structure:
Offset Size Description
00h 16 BYTEs server name resource is on
10h BYTE adapter number server is on
11h BYTE resource name
21h WORD remote port index, use to get additional information
23h WORD buffer size
25h WORD baud rate (see below)
26h BYTE modem status register
27h BYTE modem control register
28h BYTE line status register
29h BYTE line control register
2Ah BYTE flow control in use: 0 - NONE, 1 - XON/XOFF, 2 - RTS/CTS
2Bh WORD send timeout in ticks
2Dh WORD receive timeout in ticks
2Fh WORD time used on remote port
31h WORD time left before timeout
33h BYTE if server changes allowed?
34h WORD FFFFh (-1) if connection ok, else old port index
Values for baud rate:
00h 110
01h 150
02h 300
03h 600
04h 1200
05h 2400
06h 4800
07h 9600
08h 19200
09h 38400
0Ah 57600
0Bh 115200
0Ch 134.5
0Dh 1800
0Eh 2000
0Fh 3600
10h 7200
----------148008-----------------------------
INT 14 - ARTICOM - GET AVAILABLE SERVER NAME
AX = 8008h
BX = server index (0,1,...)
ES:DI -> server name structure (see below)
Return: AX = error code, if error (see AX=8003)
BX = next remote port, repeat call to get next available server
Note: the wildcard '*' is supported in the server name field. Set the
server name to FFh to search for all servers.
SeeAlso: AX=8000h,AX=8003h,AX=8007h
Format of server name structure:
Offset Size Description
00h 16 BYTEs (call) ASCIZ servername
10h BYTE (return) the adapter server is found
----------148009-----------------------------
INT 14 - ARTICOM - SET SEND AND RECEIVE TIMEOUTS
AX = 8009h
BX = send timeout in ticks
CX = receive timeout in ticks
DX = port index (COM1=0, COM2=1, ...)
Return: nothing
SeeAlso: AX=8000h,AX=800Ah
----------14800A-----------------------------
INT 14 - ARTICOM - MODIFY FLOW CONTROL
AX = 800Ah
BL = flow control type (00h none, 01h XON/XOFF, 02h RTS/CTS)
DX = port index (COM1=0, COM2=1, ...)
Return: AX = error code, if error (see AX=8003h)
Note: for attached ports only!
SeeAlso: AX=8000h,AX=8003h,AX=8009h
----------148025-----------------------------
INT 14 - ARTICOM - SET INTERNAL SEND/RECEIVE VECTOR
AX = 8025h
DS:DX -> address of trap function (see below) to call on read/write
Note: setting the vector to a user function allows the redirector's activity
to be monitored.
SeeAlso: AX=8000h,AX=8035h,INT 21/AH=25h
Trap function called with:
AH = operation
80h reading character
81h writing character
AL = character
Return: AX must be preserved
far JUMP to old trap function (see AX=8035h)
----------148035-----------------------------
INT 14 - ARTICOM - GET INTERNAL SEND/RECEIVE VECTOR
AX = 8035h
Return: ES:BX -> address of current send/receive routine
Note: this function returns the address of the routine which is called
inside A-REDIR.EXE each time a character is received or sent on the
active COM port.
SeeAlso: AX=8000h,AX=8025h,INT 21/AH=35h
----------1481-------------------------------
INT 14 - COURIERS.COM - CHECK IF PORT BUSY
AH = 81h
AL = port number (1-4)
Return: AH = 00h port available
01h port exists but already in use
02h port nonexistent
Note: COURIERS is a TSR utility by PC Magazine
SeeAlso: AH=83h,AH=8Dh
----------1481-------------------------------
INT 14 - Egberto Willies COMM-DRV - EXTENDED INITIALIZATION
AH = 81h
BX:DI -> port control block
Return: ???
SeeAlso: AH=00h
Format of port control block:
Offset Type Description
00h WORD port IO address
02h WORD port IRQ
04h WORD baud rate
06h WORD parity
08h WORD data bits
0Ah WORD stop bits
0Ch WORD break status
0000h off
0Eh WORD flow control protocol
10h BYTE input block
11h BYTE output block
12h WORD low threshold
14h WORD high threshold
16h WORD segment of buffer
18h WORD offset of buffer
1Ah WORD input buffer length
1Ch WORD output buffer length
1Eh BYTE auxiliary address
1Fh BYTE spare
20h 4 WORDs spares
----------148100-----------------------------
INT 14 - VIDEO FOSSIL - RETURN VFOSSIL INFORMATION
AX = 8100h
ES:DI -> buffer for VFOSSIL information (see below)
Return: AX = 1954h if installed
SeeAlso: AH=7Eh,AX=8101h
Format of VFOSSIL information:
Offset Size Description
00h WORD size of information in bytes, including this field
02h WORD VFOSSIL major version
04h WORD VFOSSIL revision level
06h WORD highest VFOSSIL application function supported
----------148101-----------------------------
INT 14 - VIDEO FOSSIL - OPEN VFOSSIL
AX = 8101h
ES:DI -> buffer for application function table (see below)
CX = length of buffer in bytes
Return: AX = 1954h if installed
BH = highest VFOSSIL application function supported
Note: the number of initialized pointers in the application function table
will never exceed CX/4; if the buffer is large enough, BH+1 pointers
will be initialized
SeeAlso: AX=8102h
Format of application function table:
Offset Size Description
00h DWORD -> function to query current video mode (VioGetMode)
04h DWORD -> function to set video mode (VioSetMode)
08h DWORD -> function to query hardware config (VioGetConfig)
0Ch DWORD -> function to write data in TTY mode (VioWrtTTY)
10h DWORD -> function to get current ANSI state (VioGetANSI)
14h DWORD -> function to set new ANSI state (VioSetANSI)
18h DWORD -> function to get curr cursor position (VioGetCurPos)
1Ch DWORD -> function to set cursor position (VioSetCurPos)
20h DWORD -> function to get cursor shape (VioGetCurType)
24h DWORD -> function to set cursor shape (VioSetCurType)
28h DWORD -> function to scroll screen up (VioScrollUp)
2Ch DWORD -> function to scroll screen down (VioScrollDn)
30h DWORD -> function to read cell string from screen (VioReadCellStr)
34h DWORD -> function to read char string from screen (VioReadCharStr)
38h DWORD -> function to write a cell string (VioWrtCellStr)
3Ch DWORD -> function to write char string, leaving attr (VioWrtCharStr)
40h DWORD -> function to write char string,const attr (VioWrtCharStrAttr)
44h DWORD -> function to replicate an attribute (VioWrtNAttr)
48h DWORD -> function to replicate a cell (VioWrtNCell)
4Ch DWORD -> function to replicate a character (VioWrtNChar)
Format of video mode data structure:
Offset Size Description
00h WORD length of structure including this field
02h BYTE mode characteristics
bit 0: clear if MDA, set otherwise
bit 1: graphics mode
bit 2: color disabled (black-and-white)
03h BYTE number of colors supported (1=2 colors, 4=16 colors, etc)
04h WORD number of text columns
06h WORD number of text rows
08h WORD reserved
0Ah WORD reserved
0Ch DWORD reserved
Format of video configuration data:
Offset Size Description
00h WORD structure length including this field
02h WORD adapter type
00h monochrome/printer
01h CGA
02h EGA
03h VGA
07h 8514/A
04h WORD display type
00h monochrome
01h color
02h enhanced color
09h 8514
06h DWORD adapter memory size
Format of cursor type record:
Offset Size Description
00h WORD cursor start line
02h WORD cursor end line
04h WORD cursor width (always 01h)
06h WORD cursor attribute (FFFFh = hidden)
Call VioGetMode with:
STACK: WORD VIO handle (must be 00h)
DWORD pointer to video mode data structure (see above)
Return: AX = error code (00h, 74h, 17Eh, 1B4h)
0000h successful
0074h internal VIO failure
0163h unsupported mode
0166h invalid row value
0167h invalid column value
017Eh buffer too small
01A5h invalid VIO parameter
01B4h invalid VIO handle
Call VioSetMode with:
STACK: WORD VIO handle (must be 00h)
DWORD pointer to video mode data structure (see above)
Return: AX = error code (00h, 74h, 163h, 17Eh, 1A5h, 1B4h) (see above)
Call VioGetConfig with:
STACK: WORD VIO handle (must be 00h)
DWORD pointer to video configuration data buffer (see above)
Return: AX = error code (00h, 74h, 17Eh, 1B4h) (see above)
Call VioWrtTTY with:
STACK: WORD VIO handle (must be 00h)
WORD length of string
DWORD pointer to character string to be written to screen
Return: AX = error code (00h, 74h, 1B4h) (see above)
Notes: write wraps at end of line and terminates if it reaches end of screen
in ANSI mode, ANSI control sequences are interpreted, and this func is
not required to be reentrant; in non-ANSI mode, the function is
reentrant and may be called from within an MSDOS function call
Call VioGetANSI with:
STACK: WORD VIO handle (must be 00h)
DWORD pointer to WORD which will be set to 00h if ANSI is off
or 01h if ANSI is on
Return: AX = error code (00h, 74h, 1B4h) (see above)
Call VioSetANSI with:
STACK: WORD VIO handle (must be 00h)
DWORD pointer to WORD indicating new state of ANSI
00h off
01h on
Return: AX = error code (00h, 74h, 1A4h, 1B4h) (see above)
Call VioGetCurPos with:
STACK: WORD VIO handle (must be 00h)
DWORD pointer to WORD to hold current cursor column (0-based)
DWORD pointer to WORD to hold current cursor row (0-based)
Return: AX = error code (00h, 74h, 1B4h) (see above)
Call VioSetCurPos with:
STACK: WORD VIO handle (must be 00h)
WORD cursor column
WORD cursor row
Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above)
Note: if either coordinate is invalid, the cursor is not moved
Call VioGetCurType with:
STACK: WORD VIO handle (must be 00h)
DWORD pointer to cursor type record (see above)
Return: AX = error code (00h, 74h, 1B4h) (see above)
Call VioSetCurType with:
STACK: WORD VIO handle (must be 00h)
DWORD pointer to cursor type record (see above)
Return: AX = error code (00h, 74h, 1A4h, 1B4h) (see above)
Call VioScrollUp with:
STACK: WORD VIO handle (must be 00h)
DWORD pointer to char/attr cell for filling emptied rows
WORD number or rows to scroll (FFFFh = clear area)
WORD right column of scroll area
WORD bottom row of scroll area
WORD left column of scroll area
WORD top row of scroll area
Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above)
Call VioScrollDn with:
STACK: WORD VIO handle (must be 00h)
DWORD pointer to char/attr cell for filling emptied rows
WORD number or rows to scroll (FFFFh = clear area)
WORD right column of scroll area
WORD bottom row of scroll area
WORD left column of scroll area
WORD top row of scroll area
Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above)
Call VioReadCellStr with:
STACK: WORD VIO handle (must be 00h)
WORD column at which to start reading
WORD row at which to start reading
DWORD pointer to WORD containing length of buffer in bytes
on return, WORD contains number of bytes actually read
DWORD pointer to buffer for cell string
Return: AX = error code (00h, 74h, 166h ,167h, 1B4h) (see above)
Call VioReadCharStr with:
STACK: WORD VIO handle (must be 00h)
WORD column at which to start reading
WORD row at which to start reading
DWORD pointer to WORD containing length of buffer in bytes
on return, WORD contains number of bytes actually read
DWORD pointer to buffer for character string
Return: AX = error code (00h, 74h, 166h ,167h, 1B4h) (see above)
Call VioWrtCellStr with:
STACK: WORD VIO handle (must be 00h)
WORD column at which to start writing
WORD row at which to start writing
WORD length of cell string in bytes
DWORD pointer to cell string to write
Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above)
Note: write wraps at end of line and terminates if it reaches end of screen
Call VioWrtCharStr with:
STACK: WORD VIO handle (must be 00h)
WORD column at which to start writing
WORD row at which to start writing
WORD length of character string
DWORD pointer to character string to write
Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above)
Note: write wraps at end of line and terminates if it reaches end of screen
Call VioWrtCharStrAttr with:
STACK: WORD VIO handle (must be 00h)
DWORD pointer to attribute to be applied to each character
WORD column at which to start writing
WORD row at which to start writing
WORD length of character string
DWORD pointer to character string to write
Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above)
Note: write wraps at end of line and terminates if it reaches end of screen
Call VioWrtNAttr with:
STACK: WORD VIO handle (must be 00h)
WORD column at which to start writing
WORD row at which to start writing
WORD number of times to write attribute
DWORD pointer to display attribute to replicate
Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above)
Note: write wraps at end of line and terminates if it reaches end of screen
Call VioWrtNCell with:
STACK: WORD VIO handle (must be 00h)
WORD column at which to start writing
WORD row at which to start writing
WORD number of times to write cell
DWORD pointer to cell to replicate
Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above)
Note: write wraps at end of line and terminates if it reaches end of screen
Call VioWrtNChar with:
STACK: WORD VIO handle (must be 00h)
WORD column at which to start writing
WORD row at which to start writing
WORD number of times to write character
DWORD pointer to character to replicate
Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above)
Note: write wraps at end of line and terminates if it reaches end of screen
----------148102-----------------------------
INT 14 - VIDEO FOSSIL - CLOSE VFOSSIL
AX = 8102h
Return: AX = 1954h
Note: terminates all operations; after this call, the video FOSSIL may either
be removed from memory or reinitialized
SeeAlso: AX=8101h,AX=8103h
----------148103-----------------------------
INT 14 - VIDEO FOSSIL - UNINSTALL
AX = 8103h
Return: AX = 1954h
Note: this is an extension to the VFOSSIL spec by Bob Hartman's VFOS_IBM
----------1482-------------------------------
INT 14 - KEYBOARD FOSSIL
AH = 82h
SeeAlso: AH=7Eh
----------1482-------------------------------
INT 14 - COURIERS.COM - CONFIGURE PORT
AH = 82h
AL = port number (1-4)
BX = speed (bps)
CX = bit flags
bit 0: enable input flow control
bit 1: enable output flow control
bit 2: use X.PC protocol (not yet implemented)
SeeAlso: AH=00h,AH=8Ch,INT 7A"X.PC"
----------1483-------------------------------
INT 14 - SYSTEM FOSSIL
AH = 83h
SeeAlso: AH=7Eh
----------1483-------------------------------
INT 14 - COURIERS.COM - START INPUT
AH = 83h
ES:BX -> circular input buffer
CX = length of buffer
(should be at least 128 bytes if input flow control enabled)
SeeAlso: AH=18h,AH=87h,AH=8Dh,AH=A5h"BAPI"
----------1484-------------------------------
INT 14 - COURIERS.COM - READ CHARACTER
AH = 84h
Return: ZF set if no characters available
ZF clear
AL = character
AH = modem status bits
bit 7: set on input buffer overflow
SeeAlso: AH=02h,AH=86h,AH=89h
----------1485-------------------------------
INT 14 - COURIERS.COM - FLUSH PENDING INPUT
AH = 85h
SeeAlso: AH=0Ah,AH=88h
----------1486-------------------------------
INT 14 - COURIERS.COM - START OUTPUT
AH = 86h
ES:BX -> output buffer
CX = length of output buffer
SeeAlso: AH=19h,AH=83h"COURIERS",AH=A4h"BAPI"
----------1487-------------------------------
INT 14 - COURIERS.COM - OUTPUT STATUS
AH = 87h
Return: AX = number of unsent characters
----------1488-------------------------------
INT 14 - COURIERS.COM - ABORT OUTPUT
AH = 88h
SeeAlso: AH=09h,AH=85h
----------1489-------------------------------
INT 14 - COURIERS.COM - SEND SINGLE CHARACTER
AH = 89h
CL = character to send
SeeAlso: AH=01h,AH=84h
----------148A-------------------------------
INT 14 - COURIERS.COM - SEND BREAK
AH = 8Ah
SeeAlso: AH=89h,AH=FAh
----------148C-------------------------------
INT 14 - COURIERS.COM - SET SPEED
AH = 8Ch
BX = speed in bps
SeeAlso: AH=00h,AH=82h"COURIERS"
----------148D-------------------------------
INT 14 - COURIERS.COM - DECONFIGURE PORT
AH = 8Dh
SeeAlso: AH=82h"COURIERS"
----------14A0-------------------------------
INT 14 - 3com BAPI SERIAL I/O - CONNECT TO PORT
AH = A0h
???
Return: ???
SeeAlso: AH=A1h"BAPI"
----------14A0--CXFFFF-----------------------
INT 14 - Interconnections Inc. TES - INSTALLATION CHECK/STATUS REPORT
AH = A0h
CX = FFFFh
Return: CF clear if successful
AX = 5445h ('TE')
CX <> FFFFh
DX = port number
CF set on error
Note: TES is a network serial port emulation program
SeeAlso: AH=A1h"TES"
----------14A1-------------------------------
INT 14 - 3com BAPI SERIAL I/O - DISCONNECT FROM PORT
AH = A1h
???
Return: ???
SeeAlso: AH=A0h"BAPI"
----------14A1-------------------------------
INT 14 - Interconnections Inc. TES - GET LIST OF SESSIONS WITH STATUS
AH = A1h
Return: CX = number of active sessions
ES:SI -> status array (see below)
SeeAlso: AH=A2h"TES",AH=A3h"TES"
Format of status array entry:
Offset Size Description
00h BYTE status
01h WORD offset of name
----------14A2-------------------------------
INT 14 - Interconnections Inc. TES - GET LIST OF SERVER NAMES
AH = A2h
Return: CX = number of servers
ES:SI -> array of offsets from ES for server names
SeeAlso: AH=A1h"TES"
----------14A3-------------------------------
INT 14 - Interconnections Inc. TES - START A NEW SESSION
AH = A3h
ES:SI -> ???
Return: CF clear if successful
AX = 5445h ('TE')
CX <> FFFFh
DX = port number
CF set on error
SeeAlso: AH=A1h"TES",AH=A4h"TES",AH=A6h"TES"
----------14A4-------------------------------
INT 14 - 3com BAPI SERIAL I/O - WRITE BLOCK
AH = A4h
CX = length
DH = session number (00h)
ES:BX -> buffer
Return: CX = number of bytes sent
SeeAlso: AH=19h,AH=86h,AH=A5h"BAPI"
----------14A4-------------------------------
INT 14 - Interconnections Inc. TES - HOLD CURRENTLY ACTIVE SESSION
AH = A4h
???
Return: ???
SeeAlso: AH=A3h"TES",AH=A5h"TES"
----------14A5-------------------------------
INT 14 - 3com BAPI SERIAL I/O - READ BLOCK
AH = A5h
CX = length
DH = session number (00h)
ES:BX -> buffer
Return: CX = number of bytes read
SeeAlso: AH=18h,AH=83h"COURIERS",AH=A4h"BAPI",AX=FF02h
----------14A5-------------------------------
INT 14 - Interconnections Inc. TES - RESUME A SESSION
AH = A5h
AL = session number
Return: ???
SeeAlso: AH=A4h"TES",AH=A6h"TES"
----------14A6-------------------------------
INT 14 - 3com BAPI SERIAL I/O - SEND SHORT BREAK
AH = A6h
DH = session number (00h)
SeeAlso: AH=1Ah,AH=8Ah,AH=FAh
----------14A6-------------------------------
INT 14 - Interconnections Inc. TES - DROP A SESSION
AH = A6h
AL = session number
Return: AH = status
00h successful
else error
SeeAlso: AH=A3h"TES",AH=A5h"TES"
----------14A7-------------------------------
INT 14 - 3com BAPI SERIAL I/O - READ STATUS
AH = A7h
???
Return: ???
----------14A7-------------------------------
INT 14 - Interconnections Inc. TES - SWITCH TO NEXT ACTIVE SESSION
AH = A7h
???
Return: ???
SeeAlso: AH=A3h"TES",AH=A5h"TES"
----------14A8-------------------------------
INT 14 - Interconnections Inc. TES - SEND STRING TO COMMAND INTERPRETER
AH = A8h
AL = 00h no visible response
ES:SI -> ASCIZ command
Return: ???
----------14AF00BXAAAA-----------------------
INT 14 - 3com BAPI SERIAL I/O - INSTALLATION CHECK
AX = AF00h
BX = AAAAh
Return: AX = AF01h if installed
----------14B0-------------------------------
INT 14 - 3com BAPI SERIAL I/O - ENABLE/DISABLE "ENTER COMMAND MODE" CHARACTER
AH = B0h
AL = 00h disable
= 01h enable
----------14B1-------------------------------
INT 14 - 3com BAPI SERIAL I/O - ENTER COMMAND MODE
AH = B1h
----------14F0F0-----------------------------
INT 14 - ASAP v1.0 - ???
AX = F0F0h
DX = ???
???
Return: ???
Note: ASAP (Automatic Screen Access Program) is a shareware screen reader by
MicroTalk
SeeAlso: AX=F0F1h
----------14F0F1DX0000-----------------------
INT 14 - ASAP v1.0 - INSTALLATION CHECK
AX = F0F1h
DX = 0000h
Return: DX = segment of resident code
= 0000h if not installed
Note: ASAP (Automatic Screen Access Program) is a shareware screen reader by
MicroTalk
SeeAlso: AX=F0F0h,INT 10/AH=38h
----------14F4FF-----------------------------
INT 14 - IBM/Yale EBIOS SERIAL I/O - INSTALLATION CHECK
AX = F4FFh
DX = port (00h-03h)
Return: CF clear if present
AX = 0000h
CF set if not present
AX <> 0000h
----------14F9-------------------------------
INT 14 - IBM/Yale EBIOS SERIAL I/O - REGAIN CONTROL
AH = F9h
DX = port (00h-03h)
----------14FA-------------------------------
INT 14 - IBM/Yale EBIOS SERIAL I/O - SEND BREAK
AH = FAh
DX = port (00h-03h)
SeeAlso: AH=1Ah,AH=8Ah
----------14FB-------------------------------
INT 14 - IBM/Yale EBIOS SERIAL I/O - SET OUTGOING MODEM SIGNALS
AH = FBh
AL = modem control register
bit 0: data terminal ready
1: request to send
2: OUT1
3: OUT2
4: loopback
bits 5-7 unused
DX = port (00h-03h)
----------14FC-------------------------------
INT 14 - IBM/Yale EBIOS SERIAL I/O - READ CHARACTER, NO WAIT
AH = FCh
DX = port (00h-03h)
Return: AH = RS232 status bits (see AH=00h)
AL = character
SeeAlso: AH=02h,AH=0Ch,AX=FF02h
----------14FD02-----------------------------
INT 14 - IBM/Yale EBIOS SERIAL I/O - READ STATUS
AX = FD02h
Return: CX = number of characters available
----------14FF02-----------------------------
INT 14 - IBM/Yale EBIOS SERIAL I/O - BUFFERED READ
AX = FF02h
CX = length
DX = port (00h-03h)
ES:BX -> buffer
Return: CX = number of characters read
SeeAlso: AH=18h,AH=83h"COURIERS",AH=A5h"BAPI",AH=FCh
---------------------------------------------
Interrupt List, part 2 of 8
This compilation is Copyright (c) 1989,1990,1991,1992,1993 Ralf Brown
----------15---------------------------------
INT 15 - Microsoft TSR Specification
No additional information available at this time.
----------1500-------------------------------
INT 15 - CASSETTE - TURN ON TAPE DRIVE'S MOTOR (PC and PCjr only)
AH = 00h
Return: CF set on error
AH = 86h no cassette present
CF clear if successful
SeeAlso: AH=01h"CASSETTE"
----------1500-------------------------------
INT 15 - Amstrad PC1512 - GET AND RESET MOUSE COUNTS
AH = 00h
Return: CX = signed X count
DX = signed Y count
----------1500-------------------------------
INT 15 - VMiX v2+ - INSTALLATION CHECK
AH = 00h
Return: DX = 0798h if installed
AX = version (AH = major, AL = minor)
----------1500-------------------------------
INT 15 - MultiDOS Plus - GIVE UP TIME SLICE
AH = 00h
Note: if issued by the highest-priority task while MultiDOS is using
priority-based rather than round-robin scheduling, control will be
returned to the caller immediately
SeeAlso: AH=03h"MultiDOS",AX=1000h
----------1501-------------------------------
INT 15 - CASSETTE - TURN OFF TAPE DRIVE'S MOTOR (PC and PCjr only)
AH = 01h
Return: CF set on error
AH = 86h no cassette present
CF clear if successful
SeeAlso: AH=00h"CASSETTE"
----------1501-------------------------------
INT 15 - Amstrad PC1512 - WRITE DATA TO NON-VOLATILE RAM
AH = 01h
AL = NVRAM location (00h to 3Fh)
BL = NVRAM data value
Return: AH = return code
00h OK
01h address bad
02h write error
SeeAlso: AH=02h"Amstrad"
Format of NVRAM:
Offset Size Description
00h BYTE time of day: seconds
01h BYTE alarm time: seconds
02h BYTE time of day: minutes
03h BYTE alarm time: minutes
04h BYTE time of day: hours
05h BYTE alarm time: hours
06h BYTE day of week, 1 = Sunday
07h BYTE day of month
08h BYTE month
09h BYTE year mod 100
0Ah BYTE RTC status register A
bit 7: set if date/time being updated
6-4: time base speed, default 010 = 32768 Hz
3-0: interrupt rate selection, default 0110 = 1024 Hz
0Bh BYTE RTC status register B
bit 7: clear if normal update, set if abort update
6: periodic interrupt enable
5: alarm interrupt enable
4: update end interrupt enable
3: square wave enable
2: date mode (clear = BCD, set = binary)
1: 24-hour format
0: daylight saving time enable
0Ch BYTE RTC status register C (read-only)
bit 7: IRQF flag
6: PF flag
5: AF flag
4: UF flag
0Dh BYTE RTC status register D
bit 7: battery good
0Eh 6 BYTEs time and date machine last used
14h BYTE user RAM checksum
15h WORD Enter key scancode/ASCII code
17h WORD Forward delete key scancode/ASCII code
19h WORD Joystick fire button 1 scancode/ASCII code
1Bh WORD Joystick fire button 2 scancode/ASCII code
1Dh WORD mouse button 1 scancode/ASCII code
1Fh WORD mouse button 2 scancode/ASCII code
21h BYTE mouse X scaling factor
22h BYTE mouse Y scaling factor
23h BYTE initial VDU mode and drive count
24h BYTE initial VDU character attribute
25h BYTE size of RAM disk in 2K blocks
26h BYTE initial system UART setup byte
27h BYTE initial external UART setup byte
28h 24 BYTEs available for user application
Note: bytes 00h-0Dh are the same on the IBM AT as they are used/updated by
the clock chip
----------1501-------------------------------
INT 15 - VMiX - "sys_chanreq" - I/O CHANNEL OBJECT MANAGER
AH = 01h
STACK: WORD object ID of requestor
DWORD pointer to ASCIZ name of requested method
"assign" assign channel to object
"deassign" deassign channel
"cursor" set cursor on/off
"init" initialize comm port
"open" open I/O channel
"position" set cursor position
"receive" get buffered packet from comm port
"send" send buffered packet to comm port
"vio" set current virtual I/O to specified channel
"window" make window at cursor position
---if "assign"---
WORD object UID
WORD caller UID/PID
DWORD CSL with port
---if "deassign"---
WORD channel ID
---if "cursor"---
WORD channel ID (must be a SRCSINK)
WORD new state (0000h off, 0001h on)
---if "init"---
WORD channel ID (must be a SRCSINK)
WORD comm port number (00h-03h)
WORD UART init code
---if "open"---
WORD channel ID
---if "position"---
WORD channel ID (must be a SRCSINK)
WORD position (high byte = row, low byte = column)
---if "receive"---
DWORD pointer to buffer
---if "send"---
WORD length of buffer
DWORD pointer to buffer
---if "vio"---
WORD channel ID (must be a SRCSINK)
---if "window"---
WORD top left (high byte = row, low byte = column)
WORD bottom right (high byte = row, low byte = column)
Return: DX:AX -> IRP structure or 0000h:0000h
SeeAlso: AH=00h"VMiX",AH=02h"VMiX"
----------1501-------------------------------
INT 15 - MultiDOS Plus - REQUEST RESOURCE SEMAPHORE
AH = 01h
AL = semaphore number (00h-3Fh)
Return: AH = status
00h successful
02h invalid semaphore number
Notes: if the semaphore is not owned, ownership is assigned to the calling
task and the call returns immediately
if the semaphore is already owned by another task, the calling task
is placed on a queue for the semaphore and suspended until it can
become owner of the semaphore
semaphore 0 is used internally by MultiDOS to synchronize DOS access
SeeAlso: AH=02h"MultiDOS",AH=10h"MultiDOS",AH=1Bh"MultiDOS"
----------1502-------------------------------
INT 15 - CASSETTE - READ DATA
AH = 02h
CX = number of bytes to read
ES:BX -> buffer
Return: CF clear if successful
DX = number of bytes read
ES:BX -> byte following last byte read
CF set on error
AH = status
00h successful
01h CRC error
02h bad tape signals
04h no data
80h invalid command
86h no cassette present
SeeAlso: AH=00h"CASSETTE",AH=03h"CASSETTE"
----------1502-------------------------------
INT 15 - Amstrad PC1512 - READ DATA FROM NON-VOLATILE RAM
AH = 02h
AL = NVRAM location (00h to 3Fh)
Return: AH = return code
00h OK
01h address bad
02h checksum error
AL = NVRAM data value
SeeAlso: AH=01h"Amstrad"
----------1502-------------------------------
INT 15 - VMiX - "sys_memreq" - MEMORY OBJECT MANAGER
AH = 02h
STACK: WORD object ID of requestor
DWORD pointer to ASCIZ name of requested method
"assign" allocate low memory block
"assign extended" allocate extended memory pages
"assign gdt" allocate GDT selector
"paged" allocate low paged memory
"paged extended" alllocate extended memory pages
"deassign" free memory block
"deassign gdt" free GDT selector
"getvpage" get physical address for virtual page
"setvpage" set physical address for virtual page
"info" get VMiX memory usage info block
"move" move contents of 32-bit memory
"newmcb" make new DOS memory control block
"owner" get process ID of MCB or PSP owner
"umb" allocate upper memory block
"video" toggle system use of vidoe memory and get stat
---if "assign"---
WORD number of objects
WORD size in bytes (multiple of 512 bytes)
---if "assign extended"---
WORD number of objects
WORD size in bytes (multiple of 4K)
---if "assign gdt"---
WORD access type (low byte)
WORD segment size in paragraphs
DWORD pointer to start of physical segment
---if "paged"---
WORD number of 512-byte pages
---if "paged extended"
WORD number of 4K pages
---if "deassign"---
DWORD pointer returned by previous allocation call
---if "deassign gdt"---
WORD GDT selector
---if "getvpage"---
WORD owner's process ID
DWORD pointer to buffer for page structure (struct VPGE)
---if "setvpage"---
WORD owner's process ID
DWORD pointer to new page structure (struct VPGE)
---if "info"---
no additional arguments
---if "move"
DWORD 32-bit source address
DWORD 32-bit destination address
WORD number of words to move
---if "newmcb"---
DWORD pointer to new MCB's location
WORD size of memory block
DWORD pointer to ASCIZ name string (max 8 chars)
---if "owner"---
WORD MCB or PSP segment
---if "umb"---
WORD size in paragraphs
---if "video"---
no additional arguments
Return: DX:AX -> memory block or VPGE struct or 0000h:0000h
SeeAlso: AH=00h"VMiX",AH=01h"VMiX"
----------1502-------------------------------
INT 15 - MultiDOS Plus - RELEASE RESOURCE SEMAPHORE
AH = 02h
AL = semaphore number (00h-3Fh)
Return: AH = status
00h successful
01h not semaphore owner
02h invalid semaphore number
Notes: if any tasks are waiting for the semaphore, the first task on the wait
queue will become the new owner and be reawakened
do not use within an interrupt handler
SeeAlso: AH=01h"MultiDOS",AH=10h"MultiDOS",AH=1Ch"MultiDOS"
----------1503-------------------------------
INT 15 - CASSETTE - WRITE DATA (PC and PCjr only)
AH = 03h
CX = number of bytes to write
ES:BX -> data buffer
Return: CF clear if successful
ES:BX -> byte following last byte written
CF set on error
AH = status (see AH=02h"CASSETTE")
CX = 0000h
SeeAlso: AH=00h"CASSETTE",AH=02h"CASSETTE"
----------1503-------------------------------
INT 15 - Amstrad PC1512 - WRITE VDU COLOR PLANE WRITE REGISTER
AH = 03h
AL = value (I,R,G,B bits)
SeeAlso: AH=04h"Amstrad"
----------1503-------------------------------
INT 15 - VMiX - "sys_pinput" - PROMPTED CONSOLE INPUT
AH = 03h
STACK: DWORD pointer to ASCII prompt
WORD field outline character
WORD length of input field (max 7Fh)
DWORD address of pointer to input buffer
Return: AX = length of input (input buffer is padded with blanks)
SeeAlso: AH=04h"VMiX"
----------1503-------------------------------
INT 15 - MultiDOS Plus - SUSPEND TASK FOR INTERVAL
AH = 03h
DX = number of time slices to remain suspended
Return: after specified interval has elapsed
Note: when priority-based scheduling is in use, high-priority tasks should
use this function to yield the processor
SeeAlso: AH=00h"MultiDOS",AH=0Ah"MultiDOS"
----------1504-------------------------------
INT 15 - SYSTEM - BUILD ABIOS SYSTEM PARAMETER TABLE (PS)
AH = 04h
ES:DI -> results buffer length 20h for System Parameter Table
DS = segment containing ABIOS RAM extensions (zero if none)
Return: AH = 00h success: results at ES:DI
CF set on failure
SeeAlso: AH=05h"ABIOS",C1h
Format of ABIOS System Parameter Table:
Offset Size Description
00h DWORD FAR address of ABIOS Common Start Routine
04h DWORD FAR address of ABIOS Interrupt Routine
08h DWORD FAR address of ABIOS Time-out Routine
0Ch WORD number of bytes of stack required by this ABIOS implementation
0Eh 16 BYTEs reserved
1Eh WORD number of entries in initialization table
----------1504-------------------------------
INT 15 - Amstrad PC1512 - WRITE VDU COLOR PLANE READ REGISTER
AH = 04h
AL = value (RDSEL1 and RDSEL0)
SeeAlso: AH=03h"Amstrad",05h"Amstrad"
----------1504-------------------------------
INT 15 - VMiX - "sys_vprintf" - FORMATTED OUTPUT TO STREAM
AH = 04h
STACK: DWORD control string
DWORD array of arguments
SeeAlso: AH=03h"VMiX"
----------1504-------------------------------
INT 15 - MultiDOS Plus - SEND MESSAGE TO ANOTHER TASK
AH = 04h
AL = mailbox number (00h-3Fh)
CX = message length in bytes
DS:SI -> message
Return: AH = status
00h successful
01h out of message memory
02h invalid mailbox number
Note: the message is copied into a system buffer; the caller may immediately
reuse its buffer
SeeAlso: AH=05h"MultiDOS"
----------1505-------------------------------
INT 15 - SYSTEM - BUILD ABIOS INITIALIZATION TABLE (PS)
AH = 05h
ES:DI -> results buffer length (18h * Number_of_Entries)
DS = segment containing ABIOS RAM extensions (zero if none)
Return: AH = 00h success: results at ES:DI
CF set on failure
SeeAlso: AH=04h"ABIOS",C1h
Format of one entry of ABIOS Initialization Table:
Offset Size Description
00h WORD device ID
02h WORD number of Logical IDs
04h WORD Device Block length (zero for ABIOS patch or extension)
06h DWORD -> init routine for Device Block and Function Transfer Table
0Ah WORD request block length
0Ch WORD Function Transfer Table length (zero for a patch)
0Eh WORD Data Pointers length (in Common Data Area)
10h BYTE secondary device ID (hardware level this ABIOS ver supports)
11h BYTE revision (device driver revision level this ABIOS supports)
12h 6 BYTEs reserved
----------1505-------------------------------
INT 15 - Amstrad PC1512 - WRITE VDU GRAPHICS BORDER REGISTER
AH = 05h
AL = value (I,R,G,B bits)
SeeAlso: AH=04h"Amstrad"
----------1505-------------------------------
INT 15 - VMiX - "sys_getpid" - GET PROCESS ID OF CURRENT PROCESS
AH = 05h
Return: AX = process ID
SeeAlso: AH=06h"VMiX",AH=0Bh"VMiX"
----------1505-------------------------------
INT 15 - MultiDOS Plus - CHECK MAILBOX
AH = 05h
AL = mailbox number (00h-3Fh)
Return: AH = status
00h successful
DX = length of first message in queue, 0000h if no message
02h invalid mailbox number
SeeAlso: AH=04h"MultiDOS",AH=06h"MultiDOS"
----------1506-------------------------------
INT 15 - Amstrad PC1512 - GET ROS VERSION NUMBER
AH = 06h
Return: BX = version number
----------1506-------------------------------
INT 15 - VMiX - "sys_getpcb" - GET POINTER TO PROCESS CONTROL BLOCK
AH = 06h
STACK: WORD process ID
Return: DX:AX -> process control block
SeeAlso: AH=05h"VMiX",AH=07h"VMiX",AH=08h"VMiX"
----------1506-------------------------------
INT 15 - MultiDOS Plus - READ MAILBOX
AH = 06h
AL = mailbox number (00h-3Fh)
CX = size of buffer in bytes
ES:DI -> buffer for message
Return: AH = status
00h successful
CX = number of bytes copied
DX = actual length of message
02h invalid mailbox number
Note: if the caller's buffer is not large enough, the message is truncated
and the remainder is lost
SeeAlso: AH=04h"MultiDOS",AH=05h"MultiDOS"
----------1507-------------------------------
INT 15 - VMiX - "sys_getocb" - GET POINTER TO OBJECT CONTROL BLOCK
AH = 07h
STACK: WORD object type
Return: DX:AX -> object control block
SeeAlso: AH=06h"VMiX",AH=08h"VMiX"
----------1507-------------------------------
INT 15 - MultiDOS Plus - SPAWN INTERNAL TASK (CREATE NEW THREAD)
AH = 07h
BX:CX = entry point of new task
DX = stack size in paragraphs
Return: AH = status
00h successful
01h no free task control blocks
02h no free memory for task's stack
Note: execution returns immediately to calling task
SeeAlso: AH=08h"MultiDOS",AH=09h"MultiDOS",AH=13h"MultiDOS"
----------1508-------------------------------
INT 15 - VMiX - "sys_getccb" - GET CHANNEL CONTROL BLOCK
AH = 08h
STACK: WORD channel ID
Return: DX:AX -> channel control block
SeeAlso: AH=06h"VMiX",AH=07h"VMiX"
----------1508-------------------------------
INT 15 - MultiDOS Plus - TERMINATE INTERNAL TASK (KILL THREAD)
AH = 08h
Return: calling task terminated, so execution never returns to caller
Notes: an internal task must be terminated with this function rather than a
DOS termination function
task's stack space is returned to parent task's memory pool
SeeAlso: AH=07h"MultiDOS"
----------1509-------------------------------
INT 15 - VMiX - "sys_getqueue" - GET ID OF QUEUED ELEMENT
AH = 09h
STACK: WORD queue ID (0 = process queue, 1 = object, 3 = type)
WORD subqueue ID
Return: AX = queue ID
SeeAlso: AH=0Ah"VMiX"
----------1509-------------------------------
INT 15 - MultiDOS Plus - CHANGE TASK'S PRIORITY
AH = 09h
AL = new priority
Note: the priority has different meanings depending on whether priority-
based or round-robin scheduling is used
SeeAlso: AH=07h"MultiDOS"
----------150A-------------------------------
INT 15 - VMiX - "sys_qetqnext" - GET ID OF NEXT QUEUED ELEMENT
AH = 0Ah
STACK: WORD queue ID (0 = process queue, 1 = object, 3 = type)
WORD ID of current element in queue chain
Return: AX = ID of next element
SeeAlso: AH=09h"VMiX",AH=0Fh"VMiX"
----------150A-------------------------------
INT 15 - MultiDOS Plus - CHANGE TIME SLICE INTERVAL
AH = 0Ah
AL = new interval
00h = 55.0 ms (default)
80h = 27.5 ms
40h = 13.75 ms
20h = 6.88 ms
10h = 3.44 ms
08h = 1.72 ms
SeeAlso: AH=03h"MultiDOS"
----------150B-------------------------------
INT 15 - VMiX - "sys_sysreq" - SYSTEM CONFIGURATION MANAGER
AH = 0Bh
STACK: WORD caller's UID
DWORD pointer to ASCIZ name of requested method
"abort" abort current send/receive on comm port
"block" start/end critical section
"close" terminate interrupt-drive comm I/O
"open" prepare comm port for interrupt-driven I/O
"delay" set delay timer and wait
"hibernate" put process to sleep
"ints" enable/disable interrupt-driven INT 14h
"length" get current send/receive buffer offsets
"kswitch" switch stacks
"numproc" get number of active processes
"protocol" set protocol function for comm interrupts
"relocate" set/reset VMiX flag for relocating to himem
"status" get current open comm port status
"wake" awaken a process
"xport" get comm port polled for logins
---if "abort"---
no additional arguments
---if "block"---
WORD 0000h end, 0001h start
---if "close"---
no additional arguments
---if "open"---
WORD comm port (00h-03h)
WORD BIOS parameter byte (see INT 14/AH=00h), except
bits 7-5 = 000 for 19200, 001 for 38400, 011 for 115200
---if "delay"---
WORD time in seconds
---if "hibernate"---
WORD process ID
---if "ints"---
WORD 0000h if no, 0001h if yes
---if "length","numproc","relocate","status","xport"---
no additional arguments
---if "kswitch"---
DWORD pointer to new stack
---if "protocol"---
DWORD pointer to function (must be in low "assign"ed memory
when in 386 mode)
---if "wake"---
WORD process ID
Return: DX:AX -> result or 0000h:0000h
---if "length"---
BYTE receive offset
BYTE send offset
---if "kswitch"---
DWORD old stack pointer
---if "numproc"---
WORD number of active processes
---if "status"---
current open comm port status
---if "xport"---
current comm port being polled for logins
SeeAlso: AH=05h"VMiX",AH=0Eh"VMiX"
----------150B-------------------------------
INT 15 - MultiDOS Plus - FORCE DISPLAY OUTPUT TO PHYSICAL SCREEN MEMORY
AH = 0Bh
Notes: sets calling task's screen pointer to actual screen memory; the pointer
may be restored with AH=0Ch
caller's video mode must be same as foreground task's video mode
any text written while in the background will be saved to the
foreground task's virtual screen when it switches to the background
useful if a background task wants to display a message on the
foreground screen
SeeAlso: AH=0Ch"MultiDOS"
----------150C-------------------------------
INT 15 - VMiX - "sys_getstack" - GET POINTER TO PROCESS TSS STACK
AH = 0Ch
STACK: WORD process ID
Return: DX:AX -> TSS stack store
SeeAlso: AH=00"VMiX"
----------150C-------------------------------
INT 15 - MultiDOS Plus - RESTORE OLD VIDEO DISPLAY MEMORY
AH = 0Ch
Note: restores task's screen pointer saved by AH=0Bh; must not be called
unless AH=0Bh has been called first
SeeAlso: AH=0Bh"MultiDOS"
----------150D-------------------------------
INT 15 - VMiX - "sys_spawn" - START A CHILD PROCESS JOB SHELL
AH = 0Dh
STACK: DWORD ASCIZ string starting with requested I/O channel and
followed by standard VMiX shell command string
Return: AX = process ID or error code "SYS_ERROR"
Note: the maximum string length is 7Fh characters
SeeAlso: AH=0Eh"VMIX",AH=11h"VMiX",INT 21/AH=4Bh
----------150D-------------------------------
INT 15 - MultiDOS Plus - DISABLE MULTITASKING
AH = 0Dh
Note: calling task receives all time slices until AH=0Eh is called; this
allows time-critical events or nonreentrant code to be processed
SeeAlso: AH=0Eh"MultiDOS",AH=10h"MultiDOS",AX=101Bh,AH=20h"MultiDOS"
----------150E-------------------------------
INT 15 - VMiX - "sys_kill" - HARD TERMINATE PROCESS
AH = 0Eh
STACK: WORD process ID
Return: AX = status (SYS_OK or SYS_ERROR)
SeeAlso: AH=0Bh"VMiX",AH=0Dh"VMIX"
----------150E-------------------------------
INT 15 - MultiDOS Plus - ENABLE MULTITASKING
AH = 0Eh
SeeAlso: AH=0Dh"MultiDOS",AX=101Ch,AH=20h"MultiDOS"
----------150F-------------------------------
INT 15 C - SYSTEM - FORMAT UNIT PERIODIC INTERRUPT (PS ESDI drives only)
AH = 0Fh
AL = phase code
00h reserved
01h surface analysis
02h formatting
Return: CF clear if formatting should continue, set if it should terminate
Note: called during ESDI drive formatting after each cylinder is completed
SeeAlso: INT 13/AH=1Ah
----------150F-------------------------------
INT 15 - VMiX - "sys_getqkey" - GET KEY FIELD OF QUEUED ELEMENT
AH = 0Fh
STACK: WORD queue ID (0 = process queue, 1 = object q, 3 = type q)
WORD ID of element in queue chain
Return: AX = key
SeeAlso: AH=0Ah"VMiX"
----------150F-------------------------------
INT 15 - MultiDOS Plus - EXECUTE A MULTIDOS PLUS COMMAND
AH = 0Fh
DS:BX -> ASCIZ command
Return: after command has been processed
Notes: specified string is executed as if it had been typed at the MultiDOS
command prompt
the task is placed on a queue which MultiDOS examines periodically and
is suspended until MultiDOS has processed the command
all lowercase characters up to the first blank are converted to upper
case within the given buffer
----------1510-------------------------------
INT 15 - VMiX - "sys_virtual" - EXECUTE CONFORMING FUNCTION IN PROTECTED MODE
AH = 10h
STACK: DWORD pointer to function
N WORDs function args
Return: AX = function's return value??? (not specified in documentation)
Note: while the function is executing, the following global descriptors are
available:
20h stack segment
38h code segment of function
40h data alias for function's code segment
additional GDT descriptors can be allocated using AH=02h with
function "assign gdt"
SeeAlso: AH=02h"VMiX",AH=51h"VMiX"
----------1510-------------------------------
INT 15 - MultiDOS Plus - TEST RESOURCE SEMAPHORE
AH = 10h
AL = semaphore number (00h-3Fh)
Return: AH = status
00h semaphore not in use
01h semaphore owned by another task
02h invalid semaphore number
03h semaphore owned by caller
SeeAlso: AH=02h"MultiDOS",AH=0Dh"MultiDOS",AH=1Dh"MultiDOS"
----------151000-----------------------------
INT 15 - TopView - "PAUSE" - GIVE UP CPU TIME
AX = 1000h
Return: after other processes run
Note: under DESQview, if the process issuing this call has hooked INT 08h,
the current time-slice is set to expire at the next clock tick rather
than immediately
SeeAlso: AH=00h"MultiDOS",AX=5305h,INT 21/AH=89h,INT 21/AH=EEh"DoubleDOS"
SeeAlso: INT 2F/AX=1680h,INT 60/DI=0106h,INT 62/AH=01h,INT 7A/BX=000Ah
SeeAlso: INT 7F/AH=E8h
----------151001-----------------------------
INT 15 - TopView - "GETMEM" - ALLOCATE "SYSTEM" MEMORY
AX = 1001h
BX = number of bytes to allocate
Return: ES:DI -> block of memory or 0000h:0000h (DV v2.26+)
AX = status (DV v2.42)
0000h successful
0001h failed
Note: use SETERROR (AX=DE15h) to avoid a user prompt if there is insufficient
common memory. Under DV v2.42, this call never generates a user
prompt regardless of the SETERROR value; instead, it always returns
AX=0001h and ES:DI=0000h:0000h if out of memory
SeeAlso: AX=1002h,AX=102Eh,AX=DE0Ch,AX=DE15h
----------151002-----------------------------
INT 15 - TopView - "PUTMEM" - DEALLOCATE "SYSTEM" MEMORY
AX = 1002h
ES:DI -> previously allocated block
Return: block freed
SeeAlso: AX=1001h,AX=DE0Dh
----------151003-----------------------------
INT 15 - TopView - "PRINTC" - DISPLAY CHARACTER/ATTRIBUTE ON SCREEN
AX = 1003h
BH = attribute
BL = character
DX = segment of object handle for window
Note: BX=0 does not display anything, it only positions the hardware cursor
----------1510-------------------------------
INT 15 - TopView - UNIMPLEMENTED IN DV 2.x
AH = 10h
AL = 04h thru 12h
Return: pops up "Programming error" window in DV 2.x
----------151013-----------------------------
INT 15 - TopView - "GETBIT" - DEFINE A 2ND-LEVEL INTERRUPT HANDLER
AX = 1013h
ES:DI -> FAR service routine
Return: BX = bit mask indicating which bit was allocated
0000h if no more bits available
SeeAlso: AX=1014h,AX=1015h
Note: only a few TopView/DESQview API calls are allowed during a hardware
interrupt; if other calls need to be made, the interrupt handler
must schedule a 2nd-level interrupt with "SETBIT" (AX=1015h)
----------151014-----------------------------
INT 15 - TopView - "FREEBIT" - UNDEFINE A 2ND-LEVEL INTERRUPT HANDLER
AX = 1014h
BX = bit mask from INT 15/AX=1013h
SeeAlso: AX=1013h,AX=1015h
----------151015-----------------------------
INT 15 - TopView - "SETBIT" - SCHEDULE ONE OR MORE 2ND-LEVEL INTERRUPTS
AX = 1015h
BX = bit mask for interrupts to post
Return: indicated routines will be called: (DV 2.0x) at next task switch
(DV 2.2x) immediately on return from
hardware interrupt
SeeAlso: AX=1013h,AX=1014h
Notes: this is one of the few TopView calls which are allowed from a hardware
interrupt handler
the handler will be called with ES containing the segment of the handle
of the next task to be executed; on return, ES must be the segment of
a task handle
----------151016-----------------------------
INT 15 - TopView - "ISOBJ" - VERIFY OBJECT HANDLE
AX = 1016h
ES:DI = possible object handle
Return: BX = FFFFh if ES:DI is a valid object handle
0000h if ES:DI is not
Note: under DESQview versions prior to 2.50, an object handle is always a
pointer to the object; for versions 2.50 and up, only task handles
are always pointers (other handles may consist of a unique object
number and offset into DESQview's common memory)
SeeAlso: AX=DE14h,AX=DE2Bh,AX=DE2Ch
Format of object:
Offset Size Description
00h WORD offset in common memory of previous object of same type
02h WORD offset in common memory of next object of same type
04h WORD signature FEDCh (DV 2.42-)
signature FEDCh or object number (DV 2.50+)
06h WORD object type
00h window/task
01h mailbox
02h keyboard
03h timer
04h pointer
05h panel
06h objectq
08h DWORD object handle to return to caller
0Ch DWORD canonicalized object address (segment = common memory)
10h WORD offset in common memory of owning task
12h WORD mapping context
remainder varies by object type and DESQview version
---v2.42 keyboard object---
14h WORD flag bits (see also AH=12h/BH=0Ah"OBJECT")
bit 15: keyboard opened
16h 4 BYTEs ???
1Ah WORD priority in OBJECTQ???
1Ch ...
25h WORD offset in common memory of ??? task
27h 4 BYTEs ???
---v2.42 objectq object---
14h WORD flag bits (see also AH=12h/BH=0Ah"OBJECT")
bit 15: OBJECTQ opened
16h 2 BYTEs ???
18h WORD offset in common memory of ??? task
1Ah 6 BYTEs ???
---v2.42 mailbox object---
14h WORD flag bits (see also AH=12h/BH=0Ah"OBJECT")
bit 15: mailbox opened
1Ah WORD priority in OBJECTQ???
1Ch 6 BYTEs ???
22h WORD offset in common memory of mailbox name (counted string)
0000h if no name
<= 5 BYTEs ???
---v2.22-2.42 window/task object---
14h BYTE 00h window, 01h task
15h BYTE internal (not Switch menu) window number???
16h BYTE internal (not Switch menu) window number???
17h WORD segment of internal window record
19h 2 BYTEs ???
1Bh BYTE cursor row
1Ch BYTE cursor column
1Dh 2 BYTEs ???
1Fh BYTE window height (logical)
20h BYTE window width (logical)
21h BYTE window position, row
22h BYTE window position, column
23h BYTE window height (visible)
24h BYTE window width (visible)
25h BYTE row of top of frame (or window if unframed)
26h BYTE column of left of frame (or window if unframed)
27h BYTE window height (physical, including frame)
28h BYTE window width (physical, including frame)
29h 10 BYTEs ???
33h BYTE minimum height of window
34h BYTE minimum width of window
35h BYTE maximum height of window
36h BYTE maximum width of window
37h 3 BYTEs ???
3Ah 8 BYTEs window frame characters: ul,ur,ll,lr,t,b,l,r
42h 24 BYTEs attributes???
5Ah 8 BYTEs window frame characters: ul,ur,ll,lr,t,b,l,r
62h 6 BYTEs ???
68h WORD offset in common memory of window name or 0000h if untitled
6Ah WORD length of window name
6Ch 2 BYTEs ???
6Eh WORD offset of logical cursor in window (in character cells)
70h DWORD pointer to field table for window
74h 3 BYTEs ???
77h BYTE number of last-visited field
78h DWORD pointer to field table entry for last-visited field
7Ch 3 BYTEs ???
7Fh BYTE select field marker character
80h BYTE ??? bit flags
bit 0: allow ECh window stream opcode to change reverse logattr
bit 1: alternate field processing mode selected
81h BYTE ???
82h DWORD notification function (manager stream opcode 8Ah)
no notification if segment = 0000h
86h DWORD notification argument (manager stream opcode 8Bh)
8Ah WORD offset in common memory of ??? window object or 0000h
8Ch WORD offset in common memory of ??? window object or 0000h
8Eh WORD offset in common memory of ??? window object or 0000h
8Ch 6 BYTEs ???
---task object only
92h 11 BYTEs ???
9Bh BYTE ??? bit flags
bit 3: ???
bit 6: perform protected-attribute processing on select fields
9Ch BYTE ???
9Dh WORD offset in common memory of current register save record
(see below). No register save record in use if < 01C0h
9Fh WORD offset in common memory of task's keyboard object
A1h WORD offset in common memory of task's OBJECTQ object
A3h WORD offset in common memory of task's mailbox object
A5h WORD semaphore: FFFFh if on user stack, else on task's private stack
A7h DWORD user's SS:SP
ABh WORD task's private SP (SS read from offset 0Ah)
ADh 6 BYTEs ???
B3h BYTE ??? bit flags
bit 0: run in foreground only
B4h 2 BYTEs ???
B6h BYTE task status (see AX=DE2Ch)
B7h 9 BYTEs ???
C0h WORD head pointer for keyboard buffer (wraps back to 00h after 80h)
C2h WORD tail pointer for keyboard buffer (wraps back to 00h after 80h)
C4h 2 BYTEs ??? (0000h)
C6h WORD segment of keyboard buffer for task
C8h WORD offset in common memory of ??? keyboard object
CAh BYTE ???
CBh WORD offset in common memory of ??? object
CEh BYTE ??? flag
CFh WORD offset in common memory of default notify window for task
or 0000h if none
D1h 4 BYTEs ???
D5h BYTE window number on Switch Window menu
D6h 5 BYTEs ???
DBh WORD offset in common memory of ??? object
DDh 2 BYTEs ???
DFh WORD API level for task
E1h WORD offset in common memory of ??? keyboard object
E7h WORD segment of ???
FDh BYTE ???
119h DWORD SS:SP for ???
11Dh 4 BYTEs ???
121h DWORD pointer to ???
125h 35 BYTEs ???
---v2.22
145h task's default keyboard object
---v2.42
148h WORD ???
14Ah BYTE ???
14Dh 42 BYTEs task's default keyboard object
177h 32 BYTEs task's ObjectQ object
197h 41 BYTEs task's default mailbox object
1C0h 24 BYTEs first register save record
450h -- default top of private stack
Format of Register Save Record:
Offset Size Description
00h WORD AX
02h WORD BX
04h WORD CX
06h WORD DX
08h WORD DI
0Ah WORD SI
0Eh WORD DS
10h WORD ES
12h DWORD return address
16h WORD original flags
----------151017-----------------------------
INT 15 - TopView - UNIMPLEMENTED IN DV 2.x
AX = 1017h
Return: pops up "Programming error" window in DV 2.x
----------151018-----------------------------
INT 15 - TopView - "LOCATE" - FIND WINDOW AT A GIVEN SCREEN LOCATION
AX = 1018h
BH = column
BL = row
ES = segment of object handle for window below which to search
0000h = start search with topmost window
Return: ES = segment of object handle for window which is visible at the
indicated position, or covered by indicated window
= 0000h no window
SeeAlso: AX=1023h,AX=1024h
----------151019-----------------------------
INT 15 - TopView - "SOUND" - MAKE TONE
AX = 1019h
BX = frequency in Hertz (0000h = silence)
CX = duration in clock ticks (18.2 ticks/sec)
Return: immediately, tone continues to completion
Notes: if another tone is already playing, the new tone does not start until
completion of the previous one. Up to 32 tones may be queued before
the process is blocked until a note completes.
in DV 2.00, the lowest tone allowed is 20 Hz
if CX = 0, the current note is cancelled; if BX = 0 as well, all queued
notes are also cancelled
SeeAlso: INT 16/AH=73h
----------15101A-----------------------------
INT 15 - TopView - "OSTACK" - SWITCH TO TASK'S INTERNAL STACK
AX = 101Ah
Return: stack switched
Notes: this call may not be nested; a second call must be preceded by a call
to "USTACK" (AX=1025h)
while TopView requires many API calls to be executed while on the
task's internal stack, DESQview allows those calls to be executed
regardless of the current stack
SeeAlso: AX=1025h
----------15101B-----------------------------
INT 15 - TopView - "BEGINC" - BEGIN CRITICAL REGION
AX = 101Bh
Return: task-switching temporarily disabled
Notes: will not task-switch until "ENDC" (AX = 101Ch) called unless task
voluntarily releases the CPU (upon regaining the CPU, task-switching
will again be disabled)
suspends the caller until DOS is free
SeeAlso: AH=0Dh"MultiDOS",AX=101Ch,AX=DE13h,AX=DE1Ch,INT 2F/AX=1681h
SeeAlso: INT 60/DI=0602h
----------15101C-----------------------------
INT 15 - TopView - "ENDC" - END CRITICAL REGION
AX = 101Ch
Return: task-switching enabled
Note: this API call may be made from within a hardware interrupt handler
SeeAlso: AX=101Bh,AX=DE13h,AX=DE1Bh,INT 2F/AX=1682h,INT 60/DI=0603h
----------15101D-----------------------------
INT 15 - TopView - "STOP" - STOP TASK
AX = 101Dh
ES = segment of object handle for task to be stopped
(== handle of main window for that task)
Return: indicated task will not get any CPU time until restarted with AX=101Eh
Note: once a task has been stopped, additional "STOP"s are ignored
BUG: in DV 2.00, this function is ignored unless the indicated task is the
current task
SeeAlso: AX=101Eh,AX=102Bh,AH=12h"VMiX",INT 21/AH=81h
----------15101E-----------------------------
INT 15 - TopView - "START" - START TASK
AX = 101Eh
ES = segment of object handle for task to be started
(== handle of main window for that task)
Return: indicated task is started up again
Note: once a task has been started, additional "START"s are ignored
SeeAlso: AX=101Dh,AX=102Bh,INT 21/AH=82h
----------15101F-----------------------------
INT 15 - TopView - "DISPEROR" - POP-UP ERROR WINDOW
AX = 101Fh
BX = bit fields
bits 0-12: number of characters to display
bits 13,14: which mouse button may be pressed to remove window
00 = either
01 = left
10 = right
11 = either
bit 15: beep if 1
ES:DI -> text of message
CH = width of error window (0 = default)
CL = height of error window (0 = default)
DX = segment of object handle
Return: BX = status: 1 = left button, 2 = right, 27 = ESC pressed
Note: window remains on-screen until ESC or indicated mouse button is pressed
----------151020-----------------------------
INT 15 - TopView - UNIMPLEMENTED IN DV v2.00+
AX = 1020h
Return: pops up "Programming error" window in DV v2.00+
----------151021-----------------------------
INT 15 - TopView - "PGMINT" - INTERRUPT ANOTHER TASK
AX = 1021h
BX = segment of object handle for task to interrupt (not self)
DX:CX -> FAR routine to jump to next time task is run
Return: nothing
Notes: the FAR routine is entered with the current ES, DS, SI, DI, and BP
values, using the task's internal stack (see AX=101Ah); only SS:SP
needs to be preserved
multiple PGMINTs to a single task are processed last-in first-out
if the other task is in a DOS or DV API call, the interruption will
occur on return from that call
----------151022BX0000-----------------------
INT 15 - TopView - "GETVER" - GET VERSION
AX = 1022h
BX = 0000h
Return: BX nonzero, TopView or compatible loaded
(BL = major version, BH = minor version)
Notes: TaskView returns BX = 0001h, DESQview v2.00+ returns BX = 0A01h
----------151023-----------------------------
INT 15 - TopView - "POSWIN" - POSITION WINDOW
AX = 1023h
BX = segment of object handle for parent window within which to
position the window (0 = full screen)
ES = segment of object handle for window to be positioned
DL = bit flags
bits 0,1: horizontal position
00 = current
01 = center
10 = left
11 = right
bits 2,3: vertical position
00 = current
01 = center
10 = top
11 = bottom
bit 4: don't redraw screen if set
bits 5-7 not used
CH = number of columns to offset from position specified by DL
CL = number of rows to offset from position specified by DL
Return: nothing
----------151024-----------------------------
INT 15 - TopView - "GETBUF" - GET VIRTUAL SCREEN INFO
AX = 1024h
BX = segment of object handle for window
(0 = use default)
Return: ES:DI -> virtual screen
CX = size of virtual screen in bytes
DL = 00h text screen
01h graphics screen
SeeAlso: INT 10/AH=FEh,INT 21/AH=2Bh/CX=4445h
----------151025-----------------------------
INT 15 - TopView - "USTACK" - SWITCH BACK TO USER'S STACK
AX = 1025h
Return: stack switched back
Notes: call only after having switched to internal stack with AX=101Ah
while TopView requires many API calls to be executed while on the
task's private stack, DESQview allows those calls to be executed
regardless of the current stack
SeeAlso: AX=101Ah
----------1510-------------------------------
INT 15 - DESQview (TopView???) - UNIMPLEMENTED IN DV 2.x
AH = 10h
AL = 26h thru 2Ah
Return: pops up "Programming error" window in DV 2.x
----------15102B-----------------------------
INT 15 - DESQview v2.00+ (TopView???) - "POSTTASK" - AWAKEN TASK
AX = 102Bh
BX = segment of object handle for task
Return: nothing
Note: forces a task which is waiting on its objectq to continue by placing
the handle for the task on the objectq
SeeAlso: AX=101Dh,AX=101Eh,INT 21/AH=82h
----------15102C-----------------------------
INT 15 - DESQview v2.00+ - "NEWPROC" - START NEW APPLICATION IN NEW PROCESS
AX = 102Ch
ES:DI -> contents of .PIF/.DVP file (see below)
BX = size of .PIF/.DVP info
Return: BX = segment of object handle for new task
0000h on error
SeeAlso: AX=DE24h,INT 21/AH=4Bh
Format of .PIF/.DVP file:
Offset Size Description
00h BYTE reserved (0)
01h BYTE checksum of bytes 02h through 170h
02h 30 BYTEs blank-padded program title
20h WORD maximum memory to allocate to partition in K
22h WORD minimum memory required in K
24h 64 BYTEs ASCIZ program pathname
64h BYTE default drive letter ('A',...)
65h 64 BYTEs ASCIZ default directory name
A5h 64 BYTEs ASCIZ program parameters
E5h BYTE initial screen mode (0-7) (see also offset 189h)
E6h BYTE number of text pages used
E7h BYTE number of first interrupt to save
E8h BYTE number of last interrupt to save
E9h BYTE rows in virtual screen buffer
EAh BYTE columns in virtual screen buffer
EBh BYTE initial window position, row
ECh BYTE initial window position, column
EDh WORD system memory in K
EFh 64 BYTEs ASCIZ shared program name
12Fh 64 BYTEs ASCIZ shared program data file
16Fh BYTE flags1
bit 7: writes text directly to screen
bit 6: runs in foreground only
bit 5: uses math coprocessor
bit 4: accesses system keyboard buffer directly
bits 3-1: reserved (0)
bit 0: swappable
170h BYTE flags2
bit 6: uses command-line parameters in field at A5h
bit 5: swaps interrupt vectors
---information unique to .DVP files---
171h 2 BYTEs keys to use on open menu
173h WORD size of script buffer in bytes
175h WORD automatically give up CPU after this many tests for keyboard
input in one clock tick (default 0 = never)
177h BYTE nonzero = "uses own colors"
178h BYTE nonzero if application swappable
179h 3 BYTEs reserved (0) according to Quarterdeck documentation
in actual .DVP files, frequently 01h
17Ch BYTE nonzero to automatically close on exit (see also offset 18Bh)
17Dh BYTE nonzero if copy-protect floppy is required
---information unique to DESQview 2.0+---
17Eh BYTE .DVP version number
00h DESQview v1.2+
01h DESQview v2.0+
02h DESQview v2.2+
17Fh BYTE reserved (0)
180h BYTE initial number of rows in physical window
181h BYTE initial number of columns in physical window
182h WORD maximum expanded memory to allow, in K
184h BYTE flags3
bit 7: automatically assign window position
bit 5: maximum memory value has been specified
bit 4: disallow "Close" command
bit 3: foreground-only when doing graphics
bit 2: don't virtualize
bit 1: ??? set by DV 2.31 when "Runs in Background" = "D"
185h BYTE keyboard conflict level (0-4 for DV<2.26, 00h-0Fh for DV2.26+)
186h BYTE number of graphics pages used
187h WORD extra system memory size
189h BYTE initial screen mode (FFh = default) (overrides offset E5h)
---information unique to DESQview 2.2+---
18Ah BYTE serial port usage
FFh uses all serial ports
00h no serial ports
01h only COM1
02h only COM2
18Bh BYTE flags4
bit 7: automatically close application on exit if .COM or .EXE
specified (see also offset 17Ch)
bit 6: swappable if not using serial ports
bit 5: start program with window hidden (v2.26+)
bit 4: start program in background (v2.26+)
bit 3: virtualize text
bit 2: virtualize graphics
bit 1: share CPU when foreground
bit 0: share EGA when foreground and zoomed
18Ch BYTE protection level for 386 machines
18Dh 19 BYTEs reserved (0) for regular DESQview
---information unique to DESQview/X 1.0---
18Dh BYTE X flags
bit 0: (XNEWPROC) use DOS client layer (DOS-to-X)
(NEWPROC) inherit DOS client layer usage
bit 1: don't display DOS window
bit 2: don't display wait message when opening window
bits 3-7: unused (0)
18Eh BYTE X keyboard behavior (0-3)
18Fh BYTE font scaling
00h fixed fonts
01h scalable fonts
190h 10 BYTEs reserved (0)
19Ah WORD length of data follownig XDVP signature
19Ch 4 BYTEs signature "XDVP"
1A0h N BYTEs list of variable length records (see below)
Format of variable length record:
Offset Size Description
00h WORD length of following record, 0000h if end of record list
02h BYTE record type
01h script filename, up to 64 characters
02h command-line parameters (allows >64 characters on cmdline)
03h environment inheritance
04h environment string
05h starting window position
---types 01h,02h,04h---
03h N BYTEs ASCII data
---type 03h---
03h BYTE inheritance
00h do not inherit
01h inherit environment
---type 05h---
03h N BYTEs ASCII copy of fields as typed into DVPMAN, separated by commas:
starting row, starting column, starting height, starting width
Note: if there are multiple occurrences of record types 01h, 02h, or 03h,
only the last instance of each type is used; multiple occurrences of
type 04h are concatenated
----------15102D-----------------------------
INT 15 - DESQview v2.00+ - "KMOUSE" - KEYBOARD MOUSE CONTROL
AX = 102Dh
BL = subfunction
00h determine whether using keyboard mouse
Return: BL = 00h using real mouse
01h using keyboard mouse
01h turn keyboard mouse on
02h turn keyboard mouse off
----------15102E-----------------------------
INT 15 - DESQview v2.40+ - ALLOCATE SYSTEM MEMORY
AX = 102Eh
BX = number of bytes
Return: AX = status
0000h successful
ES:DI -> allocated system memory
0001h failed
ES:DI = 0000h:0000h
Note: under DV 2.42, this call is identical to AX=1001h
SeeAlso: AX=1001h,AX=1002h,AX=DE0Ch
Format of system memory block header (one paragraph before memory block):
Offset Size Description
00h WORD segment of next header or 0000h
02h WORD segment of previous header or 0000h
04h WORD size of block in paragraphs, including header
06h BYTE availability flag (00h in use, 01h free)
----------1511-------------------------------
INT 15 - TopView commands
AH = 11h
AL = various (except 17h)
Note: in DESQview 2.x, these function calls are identical to AH=DEh, so
see those below
SeeAlso: AH=DEh
----------1511-------------------------------
INT 15 - VMiX - "sys_system" - EXECUTE SHELL SYSTEM COMMANDS
AH = 11h
STACK: DWORD pointer to ASCIZ string containing a VMiX shell
request (max len = 127)
Return: AX = status (SYS_OK or SYS_ERROR)
SeeAlso: AH=0Ch"VMiX"
----------1511-------------------------------
INT 15 - MultiDOS Plus - TURN OFF AltZ TOGGLE
AH = 11h
Note: disables the Alt-Z MultiDOS command/program-selection hotkey
SeeAlso: AH=12h"MultiDOS"
----------151117BX0000-----------------------
INT 15 - DESQview v2.20+ - "ASSERTMAP" - GET/SET MAPPING CONTEXT
AX = 1117h
BX = 0000h get current mapping context without setting
nonzero set new mapping context
Return: BX = mapping context in effect before call
interrupts enabled
Notes: this function differs from AX = DE17h for DESQview v2.20 through 2.25
mapping contexts determine conventional-memory addressability; setting
a mapping context ensures that the associated program and data areas
are in memory for access. Usable by drivers, TSRs and shared
programs.
caller need not be running under DESQview, but must ensure that the
stack in use will not be mapped out by the call
SeeAlso: AX=DE17h,INT 2F/AX=1685h
----------1511DE-----------------------------
INT 15 - DESQview - QEXT.SYS - INSTALLATION CHECK
AX = 11DEh
Return: CF clear if installed
AX = segment at which QEXT.SYS is located
Note: a private entry point may be found by searching the beginning of the
returned segment for the signature string
"QUARTERDECK EXTENDED MEMORY MANAGER 286"; the word immediately
prior to the signature contains the QEXT version number in BCD,
and the word prior to that contains the offset within the QEXT
code segment of the private entry point
SeeAlso: INT 67/AH=3Fh
Call private entry point with:
AH = 00h ???
AH = nonzero ???
----------1512-------------------------------
INT 15 - VMiX - "sys_sleep" - PUT PROCESS TO SLEEP
AH = 12h
STACK: WORD process ID
Return: AX = status (SYS_OK or SYS_ERROR)
SeeAlso: AH=03h"MultiDOS",AX=101Dh,AH=13h"VMiX"
----------1512-------------------------------
INT 15 - MultiDOS Plus - TURN ON AltZ TOGGLE
AH = 12h
Note: enables the Alt-Z MultiDOS command/program-selection hotkey
SeeAlso: AH=11h"MultiDOS"
----------1512--BH00-------------------------
INT 15 - TopView - SEND MESSAGE - "HANDLE" - RETURN OBJECT HANDLE
AH = 12h
BH = 00h
BL = which handle to return
00h handle in DWORD on top of stack
01h current task's window handle
02h given task's mailbox handle (task's handle on stack)
03h current task's mailbox handle
04h given task's keyboard handle (task's handle on stack)
05h current task's keyboard object handle
06h given task's OBJECTQ handle (task's handle on stack)
07h current task's OBJECTQ handle
08h \
thru > return 0000:0000 under DV < 2.26
10h /
0Ch (2.26+) task owning object with handle in DWORD on top of stack
0Dh (2.26+) task handle of owner (parent) of current task
Return: DWORD on top of stack is object handle
Note: BL=0Ch,0Dh returns 00000000h if the object is not open (keyboard,
mailbox, panel, pointer, and timer objects) or is an orphan (task,
window)
SeeAlso: AH=12h/BH=02h,AH=12h/BH=80h
----------1512--BH01-------------------------
INT 15 - TopView - SEND MESSAGE - "NEW" - CREATE NEW OBJECT
AH = 12h
BH = 01h
BL = object type to create
00h (DV 2.0x only) handle is DWORD on top of stack
01h (DV 2.0x only) use task's window handle
02h (DV 2.0x only) given task's mailbox (task's handle on stack)
03h (DV 2.0x only) current task's mailbox
04h (DV 2.0x only) given task's keyboard (task's handle on stack)
05h (DV 2.0x only) current task's keyboard object
08h WINDOW class
09h MAILBOX class
0Ah KEYBOARD class
0Bh TIMER object (counts down 32-bit time in 10ms increments)
0Fh POINTER object
10h PANEL object
STACK: (if window object or WINDOW class)
DWORD address to jump to (no new task if high word == 0)
DWORD (reserved) 0 = non-task window, FFFFh = task window
DWORD bytes for task's private stack (FFFFh == default of 0100h)
DWORD bytes system memory for input buffer for READ/READN
(0 == none, -1 == default--same as logical window size)
DWORD window size, columns
DWORD window size, rows
DWORD length of window title
DWORD address of window title
Return: DWORD on top of stack is new object handle
Notes: if a new task is created, it is started with
AX = BX = SI = DI = BP = 0
DX:CX = handle of parent task
DS = ES = SS = segment of private stack (and new task's handle)
new windows are orphans, inherit the colors/hidden status of the
creating task's window, and are placed in the upper left hand corner
of the screen but not automatically redrawn
new keyboards are closed, and have all object bits cleared except for
the hardware cursor bit
SeeAlso: AH=12h/BH=02h,AH=12h/BH=81h
----------1512--BH02-------------------------
INT 15 - TopView - SEND MESSAGE - "FREE" - FREE AN OBJECT
AH = 12h
BH = 02h
BL = object
00h handle in DWORD on top of stack
window: close window and free
timer: free timer
panel: free panel object
pointer: free pointer
01h task's window handle - kills task, never returns
02h given task's mailbox (task's handle on top of stack)
03h current task's mailbox
04h given task's keyboard (task's handle on top of stack)
05h current task's keyboard object
Notes: when a window is freed, its keyboard and pointer objects are freed;
task windows also free any mailbox, objectq, and panel objects held
by the task and any child tasks
if the keyboard being freed is the default keyboard for a task, this
call is equivalent to CLOSE
panel and pointer objects are automatically closed if open
SeeAlso: AH=12h/BH=01h,AH=12h/BH=0Dh,AH=12h/BH=82h
----------1512--BH03-------------------------
INT 15 - TopView - SEND MESSAGE - "ADDR" - GET HANDLE OF MESSAGE SENDER
AH = 12h
BH = 03h
BL = object
00h mailbox handle in DWORD on top of stack
02h sender of last msg read from mailbox (task's handle on stack)
03h sender of last msg read from current task's mailbox
Return: DWORD on stack is task handle of message sender
SeeAlso: AH=12h/BH=00h,AH=12h/BH=83h
----------1512--BH03-------------------------
INT 15 - DESQview v2.26+ - "CONNECT" - CONNECT TWO WINDOWS
AH = 12h
BH = 03h
BL = window to be connected
00h handle of window to be attached in DWORD on top of stack
01h attach current task's main window
STACK: DWORD handle of window to attach to or 00000000h to detach
Return: STACK popped
Notes: when two windows are connected, both will move if the user moves either
multiple windows may be attached to a single window, but each window
may only be attached to one window at a time
SeeAlso: AH=12h/BH=83h
----------1512--BX0300-----------------------
INT 15 - TopView - SEND MESSAGE - "DIR" - GET PANEL FILE DIRECTORY
AH = 12h
BX = 0300h
STACK: DWORD handle of panel object
Return: STACK: DWORD length of directory (always multiple of 14 bytes)
DWORD address of directory
Note: a null string is returned if the object is not open
SeeAlso: AH=12h/BX=0400h"APPLY",AH=12h/BH=83h
Format of panel file:
Offset Size Description
00h 2 BYTEs C0h C3h
02h BYTE number of panels in file
03h for each panel in file:
8 BYTEs blank-padded panel name
DWORD panel offset in file
WORD panel length
data for panels (each consists of one or more window/query/manager
streams)
first byte of each panel must be 1Bh, fifth byte must be E5h
----------1512--BH04-------------------------
INT 15 - TopView - SEND MESSAGE - "READ" - READ NEXT LOGICAL LINE OF WINDOW
AH = 12h
BH = 04h
BL = window to read from
00h handle is DWORD on top of stack
01h use calling task's default window
0Ch (DV 2.26+) default window of task owning handle on top of stack
0Dh (DV 2.26+) default window of parent task of current task
Return: STACK: DWORD number of bytes read
DWORD address of buffer
Notes: reading starts at the current logical cursor position; the cursor is
updated to point at the character following the last one read
any translucent blanks (FFh) which are visible on screen are changed
to the character which is seen through them
the string produced by the read is placed in an input buffer which may
be reused by the next READ or READN of a window
window stream opcodes D8h and D9h determine whether the read returns
characters or attributes
SeeAlso: AH=12h/BH=05h"WINDOW",AH=12h/BH=12h,AH=12h/BH=84h
----------1512--BH04-------------------------
INT 15 - TopView - SEND MESSAGE - "READ" - GET NEXT RECORD FROM OBJECT
AH = 12h
BH = 04h
BL = object
00h handle is DWORD on top of stack
mailbox: wait for and get next message
keyboard: wait for and get pointer to next input buffer
pointer: wait for and get next message
02h get next message from mailbox (task's handle on top of stack)
03h get next message from current task's mailbox
04h get the next input from keyboard (handle on top of stack)
05h get the next input from task's default keyboard
06h wait for input from any object in OBJECTQ (handle on stack)
07h wait for input from any object in task's default OBJECTQ
Return: STACK: (if objectq) DWORD handle of object with input
(otherwise) DWORD number of bytes
DWORD address
Notes: for a keyboard in keystroke mode, the input buffer is a single byte
containing the character code as returned by the BIOS; the BIOS scan
code is available via the STATUS call if the character is zero
for a keyboard in field mode, the input buffer format is determined
by the field table header for the window the keyboard is attached to
keyboard input buffers and mailbox message buffers may be invalidated
by the next READ, ERASE, CLOSE, or FREE message to the same object
SeeAlso: AH=12h/BH=05h"OBJECT",AH=12h/BH=84h
Format of pointer message:
Offset Size Description
00h WORD row
02h WORD column
04h BYTE status
bit 7: set when press/release mode active and button pressed
bit 6: set when press/release mode active and button released
bits 7-2: number of clicks-1 if multiple-click mode active
bits 1,0: button pressed (00=none,01=button1,10=button2)
05h BYTE field number or zero (APILEVEL >= 2.00 only)
----------1512--BX0400-----------------------
INT 15 - TopView - SEND MESSAGE - "READ" - WAIT FOR TIMER TO EXPIRE
AH = 12h
BX = 0400h
STACK: DWORD timer's handle
Return: after timer expires
STACK: DWORD time in 1/100 sec after midnight when timer expired
SeeAlso: AH=12h/BH=0Ah,AH=12h/BH=84h
----------1512--BX0400-----------------------
INT 15 - TopView - SEND MESSAGE - "APPLY" - WRITE PANEL TO WINDOW
AH = 12h
BX = 0400h
STACK: DWORD handle of panel object
DWORD window's handle (or 0 for current task's window)
DWORD length of panel name
DWORD pointer to panel name
Return: STACK: DWORD handle of window which was used
DWORD handle of keyboard or 0
Notes: status of APPLY may be checked with STATUS message
panel MUST have the following format
first byte must be 1Bh (i.e. must start with a stream)
first opcode in stream must be E5h
single byte arg of opcode is interpreted thus:
bits 7,6 11 means create new window
10 means create new field table for existing window
01 means use existing window and field table
bit 5 if set, panel contains a field table
(creates a new keyboard and puts it in field mode)
bit 4 if set, panel contains input fields
bit 3 if set, panel contains select fields but no input fields
if the panel contains input or select fields, a keyboard handle is
returned; either the window's current open keyboard or a
newly-created keyboard object. The caller should read that keyboard
to obtain input from the panel.
SeeAlso: AH=12h/BH=84h
----------1512--BH05------------------------
INT 15 - TopView - SEND MESSAGE - "WRITE" - WRITE TO OBJECT
AH = 12h
BH = 05h
BL = object
00h handle is DWORD on top of stack
timer: start timer to end at a specified time
keyboard: add input buffer to queue
pointer: move pointer icon to specified position
02h send message by value/status=0 to mbox (task's handle on stack)
03h send message by value/status=0 to current task's mailbox
04h add input buffer to KEYBOARD queue (handle on top of stack)
05h add input buffer to task's default KEYBOARD queue
06h add an object to OBJECTQ (handle on top of stack)
07h add an object to task's default OBJECTQ
STACK: (if mailbox) DWORD length
DWORD address
(if keyboard) DWORD status (scan code in keystroke mode)
DWORD length (should be 1 in keystroke mode)
DWORD address
(if objectq) DWORD handle of object to add
(if timer) DWORD 1/100ths seconds since midnight (actually
only accurate to 1/18 sec)
(if pointer) DWORD column relative to origin of window
DWORD row relative to origin of window
Notes: under DV 2.2+, failed mailbox writes may return CF set (see AX=DE15h)
the data and status written to a keyboard object must match the format
returned by the keyboard object in the current mode
the pointer position is scaled according to the current scaling factors
SeeAlso: AH=12h/BH=04h,AH=12h/BH=85h
----------1512--BH05-------------------------
INT 15 - TopView - SEND MESSAGE - "WRITE" - WRITE STRING TO WINDOW
AH = 12h
BH = 05h
BL = window to write to
00h DWORD on top of stack is window handle
01h write string to task's default window
0Ch (DV 2.26+) default window of task owning handle on top of stack
0Dh (DV 2.26+) default window of parent of current task
STACK: DWORD object handle if handle passed on stack
DWORD total length of string (high word == 0)
DWORD address of string to display
Return: indicated actions performed
a. non-control characters are displayed (opcodes DEh and DFh control
whether the attributes are left or changed to the current attrib)
b. CR/LF/BS/Tab cause the usual cursor movement
c. ESC starts a data structure with additional commands if following
byte is less than 20h; otherwise, it is written to the window
STACK: DWORD handle of new window if window stream opcode E6h
else nothing
SeeAlso: AH=12h/BH=04h,AH=12h/BH=85h
Data Structure:
MAGIC DB 1Bh
MODE DB ? ; 00h, 01h, 10h, 14h-1Fh legal
LENGTH DW ? ; length of remainder in bytes
var-length fields follow, each an OPCODE followed by
zero or more args
MODE 00h (set or display values) "WINDOW STREAM"
Opcodes:args
00h display 20h blanks with the default attribute
01h-1Fh display OPCODE blanks with the default attribute
20h display char with default attribute 20h times
BYTE char to repeat
21h-3Fh display char with default attribute OPCODE-20h times
BYTE char to repeat
40h display 20h blanks with specified attribute
BYTE attribute of blanks
41h-5Fh display OPCODE-40h blanks with specified attribute
BYTE attribute of blanks
60h display next 20h characters
20h BYTEs characters to display
61h-7Fh display next OPCODE-60h characters
N BYTEs characters to display
80h-87h display N blanks with default attribute
BYTE low 8 bits of 11-bit count (high 3 in low 3 bits of OPCODE)
[000h means 800h]
88h-8Fh display N copies of the character
BYTE low 8 bits of 11-bit count (high 3 in low 3 bits of OPCODE)
[000h means 800h]
BYTE character to repeat
90h-97h display N blanks with specified attribute
BYTE low 8 bits of 11-bit length (high 3 in low 3 bits of OPCODE)
[000h means 800h]
BYTE attribute
98h-9FH display string at logical cursor pos
BYTE low 8 bits of 11-bit length (high 3 in low 3 bits of OPCODE)
[000h means 800h]
N BYTEs string to display
A0h set logical cursor row
BYTE row number (0 is top)
A1h set logical cursor column
BYTE column number (0 is leftmost)
A2h set top edge of scrolling region
BYTE row
A3h set left edge of scrolling region
BYTE column
A4h set row of physical window position
BYTE line
A5h set column of physical window position
BYTE column
A6h set height of physical window
BYTE #rows
A7h set width of physical window
BYTE #columns
A8h set viewport row
BYTE row
A9h set viewport column
BYTE column
AAh set virtual screen height [contents of window unpredictable after]
BYTE rows
ABh set virtual screen width [contents of window unpredictable after]
BYTE columns
ACh-AEh unused
AFh set compatible/preferred video modes
BYTE compatibility/preference mask
bit 7 compatible with monochrome
bit 6 compatible with color text, EGA/VGA graphics
bit 5 compatible with medium-resolution CGA graphics
bit 4 compatible with high-resolution CGA graphics
bit 3 prefer monochrome
bit 2 prefer color text, EGA/VGA graphics
bit 1 prefer medium-resolution CGA graphics
bit 0 prefer high-resolution CGA graphics
B0h move logical cursor down
BYTE #rows (signed, negative values move up)
[if #rows=0 and hardware cursor owner, update hw crsr]
B1h move logical cursor right
BYTE #cols (signed, negative values move left)
[if #cols=0 and hardware cursor owner, update hw crsr]
B2h shift top edge of scrolling region
BYTE #rows (signed)
B3h shift left edge of scrolling region
BYTE #cols (signed)
B4h shift physical window down
BYTE #lines (signed)
B5h shift physical window right
BYTE #columns (signed)
B6h expand physical window vertically
BYTE #lines (signed)
B7h expand physical window horizontally
BYTE #columns (signed)
B8h adjust viewport row
BYTE #rows (signed)
B9h adjust viewport column
BYTE #columns (signed)
BAh adjust virtual screen height [contents of window unpredict after]
BYTE #rows to increase (signed)
BBh adjust virtual screen width [contents of window unpredictbl after]
BYTE #cols to increase (signed)
BCh-BFh reserved (currently unused)
C0h set logical cursor position
BYTE row number (0 is top border)
BYTE column number (0 is left border)
C1h set top left corner of scrolling region
BYTE row
BYTE column
C2h set physical window pos
BYTE upper left row (no top border if 0)
BYTE upper left column (no left border if 0)
C3h set current window size
BYTE #rows
BYTE #cols
C4h set upper left corner of viewport (portion of virtual screen
displayed in window)
BYTE row
BYTE column
C5h set size of virtual screen [contents unpredictable afterwards]
BYTE #rows
BYTE #cols
C6h unused
C7h unused
C8h set logical cursor relative to current position
BYTE number of rows to move down (signed)
BYTE number of columns to move right (signed)
[if #rows=#cols=0 and hardware cursor owner, update hw cursr]
C9h shift top left corner of scrolling region
BYTE #rows (signed)
BYTE #cols (signed)
CAh set window pos relative to current position
BYTE number of rows to shift down (signed)
BYTE number of columns to shift right (signed)
CBh set window size relative to current size
BYTE number of rows to expand (signed)
BYTE number of cols to expand (signed)
CCh shift viewport relative to current position
BYTE rows to shift (signed)
BYTE cols to shift (signed)
CDh resize virtual screen
BYTE #rows to expand (signed)
BYTE #cols to expand (signed)
CEh scroll text when using E8h-EBh/F8h-FBh opcodes (default)
CFh scroll attributes when using E8h-EBh/F8h-FBh opcodes
D0h allow window frame to extend beyond screen
D1h always display a complete frame, even if window extends beyond
edge of screen
D2h allow DV to change logical colors on video mode switch (default)
D3h application changes logical attributes
D4h window is visible [must redraw to actually make visible]
D5h window is hidden [must redraw to actually remove]
D6h window has frame (default)
D7h window unframed [must redraw to actually remove frame]
D8h READ/READN will read characters from window (default)
D9h READ/READN will read attributes from window
DAh use logical attributes, which may be remapped
attributes
1 normal text
2 highlighted normal text
3 help text
4 highlighted help text
5 error message
6 highlighted error message
7 emphasized text
8 marked text
9-16 are reverse video versions of 1-8
DBh use physical attributes for characters
DCh enable special actions for control characters (default)
DDh disable special control char handling, all chars displayable by
BIOS TTY call
DEh write both character and attribute (default)
DFh write character only, leave attribute untouched
E0h repeat following commands through E1h opcode
BYTE number of times to repeat (00h means 256 times)
E1h end of commands to repeat, start repeating them
E2h set current output color
BYTE color
E3h clear virtual screen from scroll origin to end using current color
E4h redraw window
E5h select menu style
BYTE style (normally 18h)
bits 5,4 = 01 use two-letter menu entries for remainder of
this stream
E5h (panel file only)
BYTE modifier
bits 7,6 = 11 panel stream creates new window
= 10 panel defines new field table for existing window
= 01 panel stream uses existing window & field table
bit 5 = 1 stream contains a field table (create kyboard object)
bit 4 = 1 stream defines input fields (create keyboard object)
bit 3 = 1 stream defines select fields but not input fields
bit 2 = 1 stream defines exclusive input window (DV 2.2)
bit 1 reserved
bit 0 reserved
E6h create new window and perform rest of manipulations in new window
BYTE number of rows
BYTE number of columns
Return: DWORD object handle of new window returned on stack at end
Note: the window is created with a physical size of 0x0 at the
same position as the window to which this stream was sent
E7h no operation
E8h scroll area up (top left corner defined by opcode C1h)
BYTE height
BYTE width
E9h scroll area down (top left corner defined by opcode C1h)
BYTE height
BYTE width
EAh scroll area left (top left corner defined by opcode C1h)
BYTE height
BYTE width
EBh scroll area right (top left corner defined by opcode C1h)
BYTE height
BYTE width
ECh set logical attributes for window contents
BYTE video modes command applies to
bit 7 monochrome
bit 6 color text, EGA/VGA graphics
bit 5 medium-resolution CGA graphics
bit 4 high-resolution CGA graphics
BYTE which attributes to set
bit 7 if set, copy single following byte to indicated attribs
bits 4-6 # of first attribute to change - 1
bits 0-3 # of consecutive attributes to change
N BYTEs new attributes
EDh set logical attributes for window frame
BYTE video modes command applies to (see opcode ECh)
BYTE which attributes to set
bit 7 if set, copy single following byte to indicated attrs
bits 4-6 # of first attribute to change - 1
bits 0-3 # of consecutive attributes to change
N BYTEs new attributes
attributes
1 = top left corner
2 = top right corner
3 = bottom left corner
4 = bottom right corner
5 = top edge
6 = bottom edge
7 = left edge
8 = right edge
EEh set characters for window frame
BYTE video modes command applies to (see opcode ECh)
BYTE which characters to set
bit 7 if set, copy single following byte to indicated chars
bits 4-6 # of first char to change - 1
bits 0-3 # of consecutive chars to change
N BYTEs new chars (same relative position as attributes above)
EFh set window name
BYTE length of name (should be in range 0 to logical screen width)
N BYTEs name
F0h clear input field to blanks
BYTE field number
F1h fill input field with character
BYTE field number
BYTE char
F2h set color of input field
BYTE field number (1-N)
BYTE attribute
F3h set initial contents of input field
BYTE field number (1-N)
N BYTEs enough chars to exactly fill field as defined by op FFh
F4h position cursor to start of specific input field
BYTE field number (1-N)
F5h change field table entry
BYTE field number
7-8 BYTEs field table entry (see opcode FFh below)
F6h set field type
BYTE field number
BYTE type
00h inactive
40h output field
80h input field
C0h deselected field
C2h selected field
F7h "broadcast write" write data to fields with program output bit
set in field table entry, in field number order
N BYTEs (total length of all program output fields)
F8h scroll field up a line
BYTE field number
F9h scroll field down a line
BYTE field number
FAh scroll field left
BYTE field number
FBh scroll field right
BYTE field number
FCh set field table header
BYTE number of fields (must be <= existing number of fields)
BYTE screen behavior bits
bit 7 reserved
bit 6 set if menu items may be selected via keyboard
bit 5 set if left mouse button in "status" mode (press
anywhere in window immediately returns control to app)
bit 4 set if right mouse button in "status" mode
bit 3 if set, select fields return contents or blanks rather
than 'Y' or 'N'
bit 2 if set, modified bits reset on return to application
bits 0,1 = 00 no data returned on read of keyboard
01 data returned as array of chars containing
all fields packed together, with no field
numbers
10 data returned as numbered variable-length
records for all fields
11 data returned as numbered variable-length
records for the fields which were modified
BYTE current input field (updated by DESQview)
BYTE current select field (updated by DESQview)
BYTE attribute for select fields when they are pointed at
BYTE attribute for select fields which have been selected
FDh reset modified bit for all fields
FEh reset selected and modified bits for all fields
FFh set up input fields
6 BYTEs table header (see opcode FCh above)
the field table entries, one for each field
BYTE start row \
BYTE start column \ if menu selection and start is to
BYTE end row / right or below end, select from kbd only
BYTE end column /
BYTE field type
bits 7,6 = 00 inactive (non-entry) field
01 echos keystrokes input to make menu selection
10 fill-in field
11 select field
bit 5 field can be filled by broadcast write (F7h opcode)
bit 4 reserved
bit 3 reserved
bit 2 reserved
bit 1 set if field selected
bit 0 set if field modified
BYTE modifier
if type is fill-in, then bit flags to determine behavior
bit 7 if set, automatically enter CR when field full
bit 6 move to next field when current field is full
bit 5 if set, enter text from right end (for numbers)
bit 4 if set, force input to uppercase
bit 3 if set, clear old contents on first keystroke
bit 2 if set, input returned when cursor moves out
of modified field ("validate",API level 2.02+)
bit 1 reserved
bit 0 reserved
if select field, first key to press to activate
00h if have to point-&-click or is an extended-ASCII
keystroke (only if two-key menus enabled)
BYTE (select field only) normal color of field
BYTE second key for select field. This byte is present iff
two-letter menu entries selected with opcode E5h, and
in that case is present regardless of field type
Note: DESQview uses and updates the actual copy of the information
which is contained in the stream. Thus this info must remain
intact until after the data entry is complete.
MODE 01h "QUERY STREAM" (valid only for those opcodes listed here)
A0h return logical cursor row in next byte
A1h return logical cursor column in next byte
A2h return top row of scrolling region in next byte
A3h return left column of scrolling region in next byte
A4h return row of physical window origin in next byte
A5h return column of physical window origin in next byte
A6h return height of physcial window in next byte
A7h return width of physical window in next byte
A8h return row of viewport origin in next byte
A9h return column of viewport origin in next byte
AAh return height of virtual screen in next byte
ABh return width of virtual screen in next byte
AFh return current video mode in next byte
C0h return current logical cursor position in next two bytes
C1h return top left corner of scrolling region in next two bytes
C2h return current window position in next two bytes
C3h return current window size in next two bytes
C4h return current viewport origin in next two bytes
C5h return current virtual screen size in next two bytes
D0h \ overwritten with D0h if frames may fall off screen edge
D1h / D1h if frames always displayed entirely
D2h \ overwritten with D2h if DESQview controls color palette
D3h / D3h if application changes color palette
D4h \ overwritten with D4h if window visible
D5h / D5h if window hidden
D6h \ overwritten with D6h if window has frame
D7h / D7h if window unframed
D8h \ overwritten with D8h if reading characters from window
D9h / D9h if reading attributes from window
DAh \ overwritten with DAh if using logical attributes
DBh / DBh if using physical attributes
DCh \ overwritten with DCh if TTY control char interpretation on
DDh / DDh if TTY control char interpretation off
DEh \ overwritten with DEh if writing both characters and attributes
DFh / DFh if leaving attributes untouched
E2h return current color in next byte
ECh get logical attributes for window contents
BYTE execute call if currently in specified video mode
bit 7 monochrome
bit 6 color text, EGA/VGA graphics
bit 5 medium-resolution CGA graphics
bit 4 high-resolution CGA graphics
BYTE which attributes to get
bit 7 unused???
bits 4-6 first attribute to get - 1
bits 0-3 # consecutive attributes
N BYTEs buffer to hold attributes
EDh get logical attributes for window frame
BYTE execute call if currently in video mode (see opcode ECh)
BYTE which attributes to get
bit 7 unused???
bits 4-6 first attribute to get - 1
bits 0-3 # consecutive attributes
N BYTEs buffer to hold attributes
EEh get characters for window frame
BYTE execute call if currently in video mode (see opcode ECh)
BYTE which attributes to get
bit 7 unused???
bits 4-6 first char to get - 1
bits 0-3 # consecutive chars
N BYTEs buffer to hold chars
EFh return first N characters of current window name
BYTE max length of returned name
N BYTEs buffer to hold window name
F3h return contents of specified field
BYTE field number
N BYTEs buffer to hold field contents (size exactly equal to field
size)
F5h get field table entry
BYTE field number
7-8 BYTEs buffer to hold field table entry
Notes: DV < 2.26 always returns 7 bytes
DV 2.26+ w/ APILEVEL < 2.26 returns 8 bytes iff field
table is using 8-byte entries and eighth byte after
F5h is E7h (NOP); otherwise, 7 bytes are returned
DV 2.26+ w/ APILEVEL > 2.26 returns 7 or 8 bytes
depending on the field table entry size
F6h get type of a field
BYTE field number
BYTE type
FCh get field table header
6 BYTEs buffer to store header
MODE 10h "MANAGER STREAM" (valid only for opcodes listed here)
00h allow window to be moved horizontally
01h allow window to be moved vertically
02h allow window to change width
03h allow window to change height
04h allow window to be scrolled horizontally
05h allow window to be scrolled vertically
06h allow "Close Window" menu selection for application
07h allow "Hide Window" menu selection for application
08h allow application to be suspended ("Rearrange/Freeze")
0Eh allow "Scissors" menu
10h allow DESQview main menu to be popped up
11h allow "Switch Windows" menu
12h allow "Open Window" menu
13h allow "Quit" menu selection
20h-33h opposite of 00h-13h, disallow specified action
40h notify if horizontal position of window changes
41h notify if vertical position of window changes
42h notify if width of window changes
43h notify if height of window changes
44h notify if window scrolled horizontally
45h notify if window scrolled vertically
46h notify if window is closed--program has to clean up and exit itself
47h notify if window is hidden
48h notify if "?" on main menu selected
49h notify if pointer message sent to window
4Ah notify if window is placed in foreground
4Bh notify if window is placed in background
4Ch notify if video mode changes
4Dh notify if "Scissors" menu "Cut" option selected
4Eh notify if "Scissors" menu "Copy" option selected
4Fh notify if "Scissors" menu "Paste" option selected
50h notify if DESQview main menu about to pop up
51h notify if DESQview main menu popped down
60h-71h opposite of 40h-51h: don't notify on specified event
84h attach window to parent task's window (both move together)
85h detach window from parent task's window (may move independently)
86h disable background operation for application
87h enable running in background
88h set minimum size of physical window
BYTE rows
BYTE columns
89h set maximum size of physical window
BYTE rows
BYTE cols
8Ah set primary asynchronous notification routine
DWORD address of routine, 0000h:0000h means none (see also below)
8Bh set async notification parameter
DWORD 32-bit value passed to 8Ah async routine in DS:SI
ACh (DV2.2+) perform regular select field attribute processing
ADh (DV2.2+) protect attributes in selected field from being lost
AEh make window default notify window for owning app (API level 2.00+)
AFh set selected field marker character
BYTE character to display at left edge of selected fields
BCh set standard field processing mode
BDh set alternate field processing mode (enables cursor pad for menus)
BEh disables changing reverse logical attributes with ECh opcode
BFh enables changing reverse logical attributes with ECh opcode
C0h make current window topmost in system
C1h force current process into foreground
C2h make current window topmost in process
C3h position mouse pointer relative to origin of current field
BYTE rows below upper left corner of field
BYTE columns to right of upper left corner of field
C4h position mouse pointer relative to origin of given field
BYTE field number
BYTE rows below upper left corner of field
BYTE columns to right of upper left corner of field
C5h orphan current window (also hides it)
Note: must be last in stream; all subsequent commands ignored
C6h show all windows for this process
C7h hide all windows for this process
C8h suspend process and hide all its windows
C9h force current process into background
CAh make current window bottom-most in process
CBh cancel current window manager operation, remove DV menu, give
control to topmost application
CCh orphan window and give it to the system for use as paste data
CEh reorder windows
DWORD pointer to null-terminated list of words
each word is segment of object handle for a window
FFh no operation
MODES 14h to 1Fh "USER STREAMS"
normally NOPs, but may be defined by SETESC message to invoke FAR
routines, one for each mode number
on entry to handler,
DS:SI -> first byte of actual stream (not header)
CX = #bytes in stream
ES:DI = window's handle
Asynchronous notification routine defined by manager stream 8Ah called with:
ES:DI = handle of window
DS:SI is 32-bit value set by 8Bh manager stream opcode
mailbox contains message indicating event
Opcode
40h horizontal movement
DWORD object handle of window
BYTE new row
BYTE new col
41h vertical movement
DWORD object handle of window
BYTE new row
BYTE new col
42h horizontal size change
DWORD object handle of window
BYTE new rows
BYTE new cols
43h vertical size change
DWORD object handle of window
BYTE new rows
BYTE new cols
44h scrolled horizontally
DWORD object handle of window
BYTE mouse row within window
BYTE mouse column within window
BYTE field mouse is on, 0 if none
BYTE amount moved: >0 right, <0 left, 0 done
45h scrolled vertically
DWORD object hande of window
BYTE mouse row within window
BYTE mouse column within window
BYTE field mouse is on, 0 if none
BYTE amount moved: >0 down, <0 up, 0 done
46h window close request
DWORD object handle of window
BYTE mouse pointer row
BYTE mouse pointer column
BYTE field mouse is on, 0 if none
47h application's windows hidden
48h Help for Program selected
DWORD object handle of window
BYTE mouse pointer row
BYTE mouse pointer column
BYTE field mouse is on, 0 if none
49h pointer message sent to window
DWORD pointer handle which received message
4Ah switched to window from another ("raise")
4Bh switched away from the window ("lower")
4Ch video mode changed
BYTE new BIOS video mode
4Dh Scissors/cUt selected
DWORD object handle of window
BYTE row of upper left corner
BYTE column of upper left corner
BYTE field number ul corner is in, 0=none
DWORD handle of orphaned window created with
copy of data from specified region
BYTE height of region
BYTE width of region
4Eh Scissors/Copy selected
DWORD object handle of window
BYTE row of upper left corner
BYTE column of upper left corner
BYTE field number ul corner is in, 0=none
DWORD handle of orphaned window created with
copy of data from specified region
BYTE height of region
BYTE width of region
4Fh Scissors/Paste selected
DWORD object handle of window
BYTE row of upper left corner
BYTE column of upper left corner
BYTE field number ul corner is in, 0=none
DWORD handle of orphaned window with data
BYTE height of region
BYTE width of region
Note: orphaned data window should be adopted or freed
when done
50h main menu about to pop up
51h main menu popped down
Return: all registers unchanged
----------1512--BH06-------------------------
INT 15 - DESQview 2.20+ - SEND MESSAGE - "SETPRI" - SET PRIORITY WITHIN OBJECTQ
AH = 12h
BH = 06h
BL = object
00h object handle in DWORD on top of stack
mailbox, keyboard, pointer, or timer
(DV 2.50+) window
01h (DV 2.50+) current task's window
04h given task's keyboard (task's handle on top of stack)
05h current task's default keyboard
STACK: DWORD new priority of object in task's OBJECTQ
(new priority of task if window handle)
Notes: initially all objects have the same default value. Should only make
relative adjustments to this default value.
when changing priorities, all objects already on the objectq are
reordered
for window handles, only the non-blocked task(s) with the highest
priority receive CPU time under DESQview 2.50-2.52; the default
priority is 0Ah
SeeAlso: AH=12h/BH=07h,AH=12h/BH=87h
----------1512--BH07-------------------------
INT 15 - DESQview 2.20+ - SEND MESSAGE - "GETPRI" - GET PRIORITY WITHIN OBJECTQ
AH = 12h
BH = 07h
BL = object
00h object handle in DWORD on top of stack
mailbox, keyboard, pointer, or timer
(DV 2.50+) window
01h (DV 2.50+) current task's window
04h given task's keyboard (task's handle on top of stack)
05h current task's default keyboard
Return: STACK: DWORD object priority
Note: initially all objects have the same default value. Should only make
relative adjustments to this default value.
SeeAlso: AH=12h/BH=06h
----------1512--BH08-------------------------
INT 15 - TopView - SEND MESSAGE - "SIZEOF" - GET OBJECT SIZE
AH = 12h
BH = 08h
BL = object
00h handle in DWORD on top of stack
window: total character positions in window
timer: elapsed time since timer started
pointer: number of messages queued to pointer object
panel: number of panels in panel file
keyboard: number of input buffers queued
01h total chars in current task's default window
02h number of messages in task's mailbox (task's handle on stack)
03h number of messages in current task's mailbox
04h number of input buffers queued in task's kbd (handle on stack)
05h number of input buffers queued for current task's default kbd
06h number of objects queued in OBJECTQ (task's handle on stack)
07h number of objects queued in current task's OBJECTQ
0Ch (DV 2.26+) total chars in window owning handle on top of stack
0Dh (DV 2.26+) total chars in parent task's window
Return: DWORD on top of stack is result
Note: for panel objects, a count of zero is returned if no panel file is open
for the object
SeeAlso: AH=12h/BH=04h,AH=12h/BH=09h
----------1512--BH09-------------------------
INT 15 - TopView - SEND MESSAGE - "LEN" - GET OBJECT LENGTH
AH = 12h
BH = 09h
BL = object
00h handle in DWORD on top of stack
window: get chars/line
timer: get 1/100 seconds remaining before timer expires
mailbox: (DV/X) get number of bytes queued to mailbox
01h get number of chars/line in current task's default window
0Ch (DV 2.26+) get chars/line in window owning handle on top of stk
0Dh (DV 2.26+) get chars/line in parent task's window
Return: DWORD on top of stack is length
SeeAlso: AH=12h/BH=08h
----------1512--BH0A-------------------------
INT 15 - TopView - SEND MESSAGE - "ADDTO" - WRITE CHARS AND ATTRIBS TO WINDOW
AH = 12h
BH = 0Ah
BL = window to write to
00h window handle is DWORD on top of stack
01h current task's default window
0Ch (DV 2.26+) default window of task owning handle on top of stack
0Dh (DV 2.26+) default window of parent of current task
STACK: DWORD count of attributes
DWORD address of attribute string
DWORD count of characters
DWORD address of character string
Notes: if one string is longer than the other, the shorter one will be reused
until the longer one is exhausted
the cursor is left just after the last character written
SeeAlso: AH=12h/BH=0Bh"WINDOW"
----------1512--BH0A-------------------------
INT 15 - TopView - SEND MESSAGE - "ADDTO" - SEND MAILBOX MESSAGE/STAT BY VALUE
AH = 12h
BH = 0Ah
BL = mailbox to write to
00h handle is DWORD on top of stack
02h default mailbox of task whose handle is on top of stack
03h current task's default mailbox
STACK: DWORD status (low byte)
DWORD length of message
DWORD address of message
Notes: the message is copied into either system or common memory
insufficient memory normally causes the process to be aborted; under
DESQview 2.2+, failed writes may return CF set instead (see AX=DE15h)
SeeAlso: AH=12h/BH=0Bh"MAILBOX"
----------1512--BH0A-------------------------
INT 15 - TopView - SEND MESSAGE - "ADDTO" - SET OBJECT BITS
AH = 12h
BH = 0Ah
BL = object
00h handle is DWORD on top of stack
timer: start timer for specified interval
pointer: set control flags
keyboard: set control flags
04h set control flags on KEYBOARD object (handle on top of stack)
05h set control flags on task's default KEYBOARD object
STACK: (if timer) DWORD duration in 1/100 seconds
(otherwise) DWORD bits to set
SeeAlso: AH=12h/BH=0Bh"OBJECT"
For keyboard objects, the bits have the following significance:
bit 15 reserved, can't be set
bit 14 unused
bit 13 reserved, can't be set
bit 12-6 unused
bit 5 (DV 2.2+) exclusive input
bit 4 filter all keys (used with handler established by SETESC)
if 0, only keys that would normally be displayed are filtered
bit 3 program continues executing while input in progress
bit 2 insert mode active for field mode
bit 1 hardware cursor displayed when task is hardware cursor owner
must be set if keyboard in field mode and field table includes
input fields
bit 0 keyboard is in field mode rather than keystroke mode
For pointer objects, the bits have the following significance:
bit 15 reserved, can't be set
bit 14-8 unused
bit 7 mouse pointer is hidden while in window
bit 6 get messages even if window not topmost
bit 5 get messages even if window not foreground
bit 4 multiple clicks separated by less than 1/3 second are counted
and returned in a single message
bit 3 pointer position is relative to screen origin, not window origin
bit 2 send message on button release as well as button press
bit 1 (DV 2.23+) send message with row=FFFFh and col=FFFFh whenever
pointer leaves the window
bit 0 send message only on button activity, not movement
DV-specific, and INT 15/AX=DE0Fh must have been called first
----------1512--BH0B-------------------------
INT 15 - TopView - SEND MESSAGE - "SUBFROM" - WRITE ATTRIBUTES TO WINDOW
AH = 12h
BH = 0Bh
BL = window to write attributes to
00h handle is DWORD on top of stack
01h current task's default window
0Ch (DV 2.26+) default window of task owning handle on top of stack
0Dh (DV 2.26+) default window of parent of current task
STACK: DWORD number of attributes to write
DWORD address of attributes
Note: the attributes are written starting at the current cursor position; the
cursor is left just after the last position written
SeeAlso: AH=12h/BH=0Ah"WINDOW"
----------1512--BH0B-------------------------
INT 15 - TopView - SEND MESSAGE - "SUBFROM" - SEND MAILBOX MESSAGE/STAT BY REF
AH = 12h
BH = 0Bh
BL = mailbox to write to
00h handle is DWORD on top of stack
02h default mailbox of task whose handle is on top of stack
03h current task's default mailbox
STACK: DWORD status (low byte)
DWORD length of message
DWORD address of message
Notes: only a pointer to the message is stored, but the write may still fail
due to insufficient memory
under DV 2.2+, failed mailbox writes may return CF set (see AX=DE15h)
SeeAlso: AH=12h/BH=0Ah"MAILBOX"
----------1512--BH0B-------------------------
INT 15 - TopView - SEND MESSAGE - "SUBFROM" - REMOVE OBJECT FROM OBJECTQ
AH = 12h
BH = 0Bh
BL = OBJECTQ from which to remove all copies of a particular object
06h OBJECTQ of task whose handle is on top of stack
07h task's default OBJECTQ
STACK: DWORD handle of object to remove
Note: should be sent whenever an object is erased or closed
----------1512--BH0B-------------------------
INT 15 - TopView - SEND MESSAGE - "SUBFROM" - RESET OBJECT BITS
AH = 12h
BH = 0Bh
BL = object
00h handle is DWORD on top of stack
pointer: reset control flags
keyboard: reset control flags
04h clear control flags on KEYBOARD object (handle on top of stack)
05h clear control flags on task's default KEYBOARD object
STACK: DWORD which bits to clear (see AH=12h/BH=0Ah"OBJECT")
SeeAlso: AH=12h/BH=0Ah"OBJECT"
----------1512--BH0C-------------------------
INT 15 - TopView - SEND MESSAGE - "OPEN" - OPEN OBJECT
AH = 12h
BH = 0Ch
BL = object
00h handle is DWORD on top of stack
window: fill with given character from scroll origin to end
keyboard: attach to a window
timer: open
pointer: start taking input for window
panel: associate with a panel file
01h fill task's default window with given char from scrl org to end
02h open given task's mailbox for input (task's handle on stack)
03h open current task's mailbox
04h attach a KEYBOARD to a window (handle on top of stack)
05h attach task's default KEYBOARD to a window
06h open a task's OBJECTQ (task's handle on top of stack)
07h open current task's OBJECTQ
0Ch (DV 2.26+) fill def window of task owning handle on top of stck
0Dh (DV 2.26+) fill default window of parent of current task
STACK: (if window) DWORD character to fill with
(if keyboard) DWORD handle of window to attach to
(if pointer) DWORD handle of window to attach to
(if panel) DWORD length of filename or resident panel
DWORD address of filename or resident panel
(otherwise) nothing
Notes: if first byte of panel file name is 1Bh, then the "name" IS a panel
if first two bytes of panel file "name" are C0hC3h, then the "name" IS
the panel file
result code of open may be retrieved with STATUS message
logical cursor is left at scroll origin after filling window
the task opening a mailbox becomes its owner, and the only task allowed
to read the mailbox
messages are only sent to a pointer object when the mouse is positioned
in the window to which the pointer has been attached
there is no need to explicitly open a timer object, as ADDTO and WRITE
messages automatically open the timer
SeeAlso: AH=12h/BH=0Dh,AH=12h/BH=14h"LOCK"
----------1512--BH0D-------------------------
INT 15 - TopView - SEND MESSAGE - "CLOSE" - CLOSE OBJECT
AH = 12h
BH = 0Dh
BL = object
00h handle is DWORD on top of stack
timer: close
keyboard: detach from window and discard queued input
pointer: stop taking input
panel: close
mailbox: close, unlock, and discard any pending messages
02h close given task's mailbox (task's handle on top of stack)
03h close task's default mailbox
04h close KEYBOARD object (handle on top of stack)
05h close task's default KEYBOARD
06h close givent task's OBJECTQ (task's handle on top of stack)
07h close current task's OBJECTQ
Notes: when an OBJECTQ is closed, each object in the OBJECTQ is sent an
ERASE message (AH=12h/BH=0Eh)
when a panel object is closed, the panel file and any panels currently
in use are freed; window and keyboard objects created by APPLY are
not affected, but field mode input ceases
open but idle timer objects consume a small amount of CPU time
SeeAlso: AH=12h/BH=0Ch,AH=12h/BH=0Eh,AH=12h/BH=14h"LOCK"
----------1512--BH0E-------------------------
INT 15 - TopView - SEND MESSAGE - "ERASE" - ERASE OBJECT
AH = 12h
BH = 0Eh
BL = object
00h handle is DWORD on top of stack
window: clear from scroll origin to end of window
keyboard: discard input
timer: cancel current interval
pointer: discard all pending messages
mailbox: discard all pending messages
01h clear task's default window from scroll origin to end
02h discard all queued messages in mailbox (handle on top of stack)
03h discard all queued messages in current task's default mailbox
04h discard all input queued to KEYBOARD (handle on top of stack)
05h discard all input queued to task's default KEYBOARD
06h remove all objects from OBJECTQ (task's handle on top of stack)
07h remove all objects from current task's OBJECTQ
0Ch (DV 2.26+) clear window of task owning handle on top of stack
0Dh (DV 2.26+) clear default window of parent of current task
Note: when an OBJECTQ is erased, each object in the OBJECTQ is also erased
SeeAlso: AH=12h/BH=02h
----------1512--BH0F-------------------------
INT 15 - TopView - SEND MESSAGE - "STATUS" - GET OBJECT STATUS
AH = 12h
BH = 0Fh
BL = object
00h handle is DWORD on top of stack
timer: is it running?
pointer: return status of last message
panel: verify success of last OPEN or APPLY
02h return status of last msg READ from mailbox (handle on stack)
03h return status of last msg READ from task's default mailbox
04h get status of last msg from task's KEYBOARD (task handle on stk)
05h get status of last msg from task's default KEYBOARD
06h return whether OBJECTQ is open or not (handle on top of stack)
07h return whether task's default OBJECTQ is open or not
Return: DWORD on top of stack is status
Notes: if object is a panel object, the status indicates the error code:
00h successful
14h panel name not in panel directory
15h not enough memory to apply panel
16h invalid panel format
17h panel file already open
81h-92h DOS error codes+80h \ codes > 80h indicate
95h not enough memory to open panel file > that the panel was
98h null panel file name / not opened
if object is a timer, the status is:
00000000h open but not running
40000000h open and running
80000000h closed
if object is an OBJECTQ, the status is:
00000000h open
80000000h closed
if object is a keyboard in keystroke mode, the status is the extended
character code (scan code) of teh last keystroke
if object is a keyboard in field mode, the status indicates the reason
for the last return from the field manager
00h Enter key pressed
01h Button 1 or keystroke selection
02h Button 2
03h validation
04h auto Enter on field
1Bh Escape pressed
46h ^Break pressed
other: extended code for key terminating input
the status of mailbox messages sent by the window manager is always 80h
the status of a pointer message is the same as the status field in the
message
SeeAlso: AH=12h/BH=04h"READ"
----------1512--BH10-------------------------
INT 15 - TopView - SEND MESSAGE - "EOF" - GET OBJECT EOF STATUS
AH = 12h
BH = 10h
BL = object
00h handle is DWORD on top of stack
window: return TRUE if logical cursor past end of window
mailbox: ???
01h returns TRUE if logical cursor past end of task's def window
02h return ??? for task's mailbox (task's handle on top of stack)
03h return ??? for current task's mailbox
0Ch (DV 2.26+) check log crsr of window owning handle on top of stk
0Dh (DV 2.26+) check log cursor of window of parent task
Return: DWORD on top of stack is status
----------1512--BH11-------------------------
INT 15 - TopView - SEND MESSAGE - "AT" - POSITION OBJECT CURSOR
AH = 12h
BH = 11h
BL = window for which to move cursor
00h window's handle is DWORD on top of stack
01h task's default window
0Ch (DV 2.26+) default window of task owning handle on top of stack
0Dh (DV 2.26+) default window of parent of current task
STACK: DWORD column
DWORD row
----------1512--BH11-------------------------
INT 15 - TopView - SEND MESSAGE - "SETNAME" - ASSIGN NAME TO MAILBOX
AH = 12h
BH = 11h
BL = mailbox to name
00h DWORD on top of stack is mailbox handle
02h use given task's mailbox (task's handle on top of stack)
03h use current task's default mailbox
STACK: DWORD length of name
DWORD address of name
SeeAlso: AH=12h/BH=12h"GETNAME",AX=DE0Eh
----------1512--BX1100-----------------------
INT 15 - TopView - SEND MESSAGE - "SETSCALE" - SET POINTER SCALE FACTOR
AH = 12h
BX = 1100h
STACK: DWORD object handle for pointer object
DWORD number of colums to scale pointer position to
DWORD number of rows to scale pointer position to
SeeAlso: AH=12h/BX=1200h
----------1512--BH12-------------------------
INT 15 - TopView - SEND MESSAGE - "READN" - GET NEXT N OBJECT BYTES
AH = 12h
BH = 12h
BL = window to read from
00h handle is DWORD on top of stack
01h read next N chars or attributes on task's default window
0Ch (DV 2.26+) read window of task owning handle on top of stack
0Dh (DV 2.26+) read default window of parent of current task
STACK: DWORD count
Return: STACK: DWORD number of bytes actually read
DWORD address of buffer containing data
Notes: reading starts at the current logical cursor position; the cursor is
updated to point at the character following the last one read
any translucent blanks (FFh) which are visible on screen are changed
to the character which is seen through them
the string produced by the read is placed in an input buffer which may
be reused by the next READ or READN of a window
window stream opcodes D8h and D9h determine whether the read returns
characters or attributes
SeeAlso: AH=12h/BH=04h"WINDOW",AH=12h/BH=05h"WINDOW"
----------1512--BH12-------------------------
INT 15 - DESQview 2.50+ - SEND MESSAGE - "GETNAME" - GET NAME OF MAILBOX
AH = 12h
BH = 12h
BL = mailbox for which to retrieve name
00h DWORD on top of stack is mailbox handle
02h use given task's mailbox (task's handle on top of stack)
03h use current task's default mailbox
STACK: DWORD length of buffer for name
DWORD pointer to buffer
Return: STACK: DWORD length of returned name (or size of buffer, if less)
Program: DESQview 2.5x is distributed as part of DESQview/X 1.0x
Note: the returned name is not NUL-terminated
SeeAlso: AH=12h/BH=11h"SETNAME",AX=DE0Eh
----------1512--BX1200-----------------------
INT 15 - TopView - SEND MESSAGE - "GETSCALE" - GET POINTER SCALE FACTOR
AH = 12h
BX = 1200h
STACK: DWORD object handle for pointer
Return: STACK: DWORD pointer pos scaled as if window were this many colums wide
DWORD pointer pos scaled as if window were this many rows high
SeeAlso: AH=12h/BX=1100h
----------1512--BH13-------------------------
INT 15 - TopView - SEND MESSAGE - "REDRAW" - REDRAW WINDOW
AH = 12h
BH = 13h
BL = window object
00h DWORD on top of stack is handle for window to redraw
01h redraw task's default window
0Ch (DV 2.26+) redraw window of task owning handle on top of stack
0Dh (DV 2.26+) redraw default window of parent of current task
SeeAlso: AH=12h/BH=05h"WINDOW",AH=12h/BH=0Eh
----------1512--BH13-------------------------
INT 15 - DESQview 2.50+ - SEND MESSAGE - "READINTO" - GET NEXT MAIL MESSAGE
AH = 12h
BH = 13h
BL = mailbox from which to read
00h DWORD on top of stack is mailbox handle
02h use given task's mailbox (task's handle on top of stack)
03h use current task's default mailbox
STACK: DWORD size of buffer in bytes
DWORD pointer to buffer
Return: STACK: DWORD number of bytes read
Program: DESQview 2.5x is distributed as part of DESQview/X 1.0x
Notes: this call blocks if no input is available, but will return less than
the requested number of bytes if some (but insufficient) data is
available
use this call instead of AH=12h/BH=04h if the mailbox has flag bits
4 or 5 set, as common memory may be exhausted by that call when
attempting to read the next message
SeeAlso: AH=12h/BH=04h"READ",AH=12h/BH=05h,AH=12h/BH=16h
----------1512--BX1300-----------------------
INT 15 - TopView - SEND MESSAGE - "SETICON" - SPECIFY POINTER ICON
AH = 12h
BX = 1300h
STACK: DWORD object handle for pointer
DWORD character to use for pointer
----------1512--BH14-------------------------
INT 15 - TopView - SEND MESSAGE - "SETESC" - SET ESCAPE ROUTINE ADDRESS
AH = 12h
BH = 14h
BL = message modifier
00h handle is DWORD on top of stack
01h define user stream
04h intercept keystrokes from KEYBOARD to a window (handle on stack)
05h intercept keystrokes from task's default KEYBOARD to a window
STACK: (if window) DWORD user stream number (14h-1Fh)
DWORD address of FAR user stream handler
(if keyboard) DWORD address of FAR filter function
The keyboard filter function is called when the keyboard is in field mode. On
entry,
AL = character
AH = 00h or extended ASCII code if AL = 00h
BL = field number
CH = cursor column
CL = cursor row
DL = field type modifier (sixth item in field table entry)
DH = seventh item in field table entry
ES:SI = window's handle
DS:DI -> field table entry for field containing the cursor
The filter function should return
AH = 00h use keystroke
01h ignore keystroke
FFh beep and ignore keystroke
Note: the filter function is not allowed to make INT 15, DOS, or BIOS calls
----------1512--BH14-------------------------
INT 15 - TopView - SEND MESSAGE - "LOCK" - REQUEST EXCLUSIVE ACCESS TO RESOURCE
AH = 12h
BH = 14h
BL = object
00h mailbox handle is DWORD on top of stack
02h use given task's mailbox (task's handle on top of stack)
03h use current task's default mailbox
Note: release exclusive access by sending CLOSE message to mailbox
access may be requested multiple times, and requires multiple CLOSEs
SeeAlso: AH=12h/BH=0Dh
----------1512--BH15-------------------------
INT 15 - DESQview v2.20+ - SEND MESSAGE - "SETFLAGS" - SET OBJECT FLAGS
AH = 12h
BH = 15h
BL = object
00h DWORD on top of stack
mailbox, keyboard, or pointer only
02h mailbox for task whose handle is on top of stack
03h mailbox for current task
04h keyboard for task whose handle is on top of stack
05h keyboard for current task
STACK: DWORD flags
if mailbox:
bit 0: all mail messages in common memory
bit 1: allow write even if closed
bit 2: don't erase messages when mailbox closed
bit 4: (DV/X) append messages with like status and
sender (stream-oriented mail)
bit 5: (DV/X) store mail in expanded memory (pool
grows as needed)
bit 6: (DV/X) make mailbox into non-owned mailbox
if keyboard:
bit 5: exclusive input when keyboard in use for input
Return: nothing
Notes: only available if the API level has been set to at least 2.20
equivalent to performing SUBFROM and ADDTO calls on the object
if a mailbox has bits 4 or 5 set, you must use "READINTO" rather than
"READ" (see AH=12h/BX=1300h"READINTO") to retrieve messages
SeeAlso: AH=12h/BH=0Ah,AH=12h/BH=0Bh,AH=12h/BH=16h
----------1512--BH16-------------------------
INT 15 - DESQview v2.20+ - SEND MESSAGE - "GETFLAGS" - GET OBJECT FLAGS
AH = 12h
BH = 16h
BL = object
00h DWORD on top of stack
mailbox, keyboard, or pointer only
02h mailbox for task whose handle is on top of stack
03h mailbox for current task
04h keyboard for task whose handle is on top of stack
05h keyboard for current task
Return: STACK: DWORD current control flags (see AH=12h/BH=15h)
Notes: only available if the API level has been set to at least 2.20
if a mailbox has bits 4 or 5 set, you must use "READINTO" rather than
"READ" (see AH=12h/BH=13h"READINTO") to retrieve messages
SeeAlso: AH=12h/BH=0Ah,AH=12h/BH=0Bh,AH=12h/BH=13h"READINTO",AH=12h/BH=15h
----------1512--BH17-------------------------
INT 15 - DESQview v2.42-2.52 - BUG
AH = 12h
BH = 17h
BL = object
00h DWORD on top of stack
mailbox, keyboard, or pointer only
02h mailbox for task whose handle is on top of stack
03h mailbox for current task
04h keyboard for task whose handle is on top of stack
05h keyboard for current task
Notes: due to a fencepost error, message 17h is accepted for mailboxes,
keyboards, and pointers, but causes a random branch
DESQview v2.50-2.52 are distributed as part of DESQview/X v1.02
----------1512--BH80-------------------------
INT 15 - DESQview v2.50+ - SEND MESSAGE WITH ERROR RECOVERY
AH = 12h
BH = 80h
Note: this function is identical to AH=12h/BH=00h, except that DESQview will
not pop up a "Programming Error" window, instead returning an error
code in AL:
00h no error
01h invalid values
02h alias invalid
03h handle valid but wrong type
04h invalid handle
SeeAlso: AH=12h/BH=00h
----------1512--BH81-------------------------
INT 15 - DESQview v2.50+ - SEND MESSAGE WITH ERROR RECOVERY
AH = 12h
BH = 81h
Note: this function is identical to AH=12h/BH=01h, except that DESQview will
not pop up a "Programming Error" window, instead returning an error
code in AL (see AH=12h/BH=80h)
SeeAlso: AH=12h/BH=01h
----------1512--BH82-------------------------
INT 15 - DESQview v2.50+ - SEND MESSAGE WITH ERROR RECOVERY
AH = 12h
BH = 82h
Note: this function is identical to AH=12h/BH=02h, except that DESQview will
not pop up a "Programming Error" window, instead returning an error
code in AL (see AH=12h/BH=80h)
SeeAlso: AH=12h/BH=02h
----------1512--BH83-------------------------
INT 15 - DESQview v2.50+ - SEND MESSAGE WITH ERROR RECOVERY
AH = 12h
BH = 83h
Note: this function is identical to AH=12h/BH=03h, except that DESQview will
not pop up a "Programming Error" window, instead returning an error
code in AL (see AH=12h/BH=80h)
SeeAlso: AH=12h/BH=03h,AH=12h/BX=0300h
----------1512--BH84-------------------------
INT 15 - DESQview v2.50+ - SEND MESSAGE WITH ERROR RECOVERY
AH = 12h
BH = 84h
Note: this function is identical to AH=12h/BH=04h, except that DESQview will
not pop up a "Programming Error" window, instead returning an error
code in AL (see AH=12h/BH=80h)
SeeAlso: AH=12h/BH=04h,AH=12h/BX=0400h
----------1512--BH85-------------------------
INT 15 - DESQview v2.50+ - SEND MESSAGE WITH ERROR RECOVERY
AH = 12h
BH = 85h
Note: this function is identical to AH=12h/BH=05h, except that DESQview will
not pop up a "Programming Error" window, instead returning an error
code in AL (see AH=12h/BH=80h)
SeeAlso: AH=12h/BH=05h
----------1512--BH86-------------------------
INT 15 - DESQview v2.50+ - SEND MESSAGE WITH ERROR RECOVERY
AH = 12h
BH = 86h
Note: this function is identical to AH=12h/BH=06h, except that DESQview will
not pop up a "Programming Error" window, instead returning an error
code in AL (see AH=12h/BH=80h)
SeeAlso: AH=12h/BH=06h
----------1512--BH87-------------------------
INT 15 - DESQview v2.50+ - SEND MESSAGE WITH ERROR RECOVERY
AH = 12h
BH = 87h
Note: this function is identical to AH=12h/BH=07h, except that DESQview will
not pop up a "Programming Error" window, instead returning an error
code in AL (see AH=12h/BH=80h)
SeeAlso: AH=12h/BH=07h
----------1512--BH88-------------------------
INT 15 - DESQview v2.50+ - SEND MESSAGE WITH ERROR RECOVERY
AH = 12h
BH = 88h
Note: this function is identical to AH=12h/BH=08h, except that DESQview will
not pop up a "Programming Error" window, instead returning an error
code in AL (see AH=12h/BH=80h)
SeeAlso: AH=12h/BH=08h
----------1512--BH89-------------------------
INT 15 - DESQview v2.50+ - SEND MESSAGE WITH ERROR RECOVERY
AH = 12h
BH = 89h
Note: this function is identical to AH=12h/BH=09h, except that DESQview will
not pop up a "Programming Error" window, instead returning an error
code in AL (see AH=12h/BH=80h)
SeeAlso: AH=12h/BH=09h
----------1512--BH8A-------------------------
INT 15 - DESQview v2.50+ - SEND MESSAGE WITH ERROR RECOVERY
AH = 12h
BH = 8Ah
Note: this function is identical to AH=12h/BH=0Ah, except that DESQview will
not pop up a "Programming Error" window, instead returning an error
code in AL (see AH=12h/BH=80h)
SeeAlso: AH=12h/BH=0Ah
----------1512--BH8B-------------------------
INT 15 - DESQview v2.50+ - SEND MESSAGE WITH ERROR RECOVERY
AH = 12h
BH = 8Bh
Note: this function is identical to AH=12h/BH=0Bh, except that DESQview will
not pop up a "Programming Error" window, instead returning an error
code in AL (see AH=12h/BH=80h)
SeeAlso: AH=12h/BH=0Bh
----------1512--BH8C-------------------------
INT 15 - DESQview v2.50+ - SEND MESSAGE WITH ERROR RECOVERY
AH = 12h
BH = 8Ch
Note: this function is identical to AH=12h/BH=0Ch, except that DESQview will
not pop up a "Programming Error" window, instead returning an error
code in AL (see AH=12h/BH=80h)
SeeAlso: AH=12h/BH=0Ch
----------1512--BH8D-------------------------
INT 15 - DESQview v2.50+ - SEND MESSAGE WITH ERROR RECOVERY
AH = 12h
BH = 8Dh
Note: this function is identical to AH=12h/BH=0Dh, except that DESQview will
not pop up a "Programming Error" window, instead returning an error
code in AL (see AH=12h/BH=80h)
SeeAlso: AH=12h/BH=0Dh
----------1512--BH8E-------------------------
INT 15 - DESQview v2.50+ - SEND MESSAGE WITH ERROR RECOVERY
AH = 12h
BH = 8Eh
Note: this function is identical to AH=12h/BH=0Eh, except that DESQview will
not pop up a "Programming Error" window, instead returning an error
code in AL (see AH=12h/BH=80h)
SeeAlso: AH=12h/BH=0Eh
----------1512--BH8F-------------------------
INT 15 - DESQview v2.50+ - SEND MESSAGE WITH ERROR RECOVERY
AH = 12h
BH = 8Fh
Note: this function is identical to AH=12h/BH=0Fh, except that DESQview will
not pop up a "Programming Error" window, instead returning an error
code in AL (see AH=12h/BH=80h)
SeeAlso: AH=12h/BH=0Fh
----------1512--BH90-------------------------
INT 15 - DESQview v2.50+ - SEND MESSAGE WITH ERROR RECOVERY
AH = 12h
BH = 90h
Note: this function is identical to AH=12h/BH=10h, except that DESQview will
not pop up a "Programming Error" window, instead returning an error
code in AL (see AH=12h/BH=80h)
SeeAlso: AH=12h/BH=10h
----------1512--BH91-------------------------
INT 15 - DESQview v2.50+ - SEND MESSAGE WITH ERROR RECOVERY
AH = 12h
BH = 91h
Note: this function is identical to AH=12h/BH=11h, except that DESQview will
not pop up a "Programming Error" window, instead returning an error
code in AL (see AH=12h/BH=80h)
SeeAlso: AH=12h/BH=11h,AH=12h/BX=1100h
----------1512--BH92-------------------------
INT 15 - DESQview v2.50+ - SEND MESSAGE WITH ERROR RECOVERY
AH = 12h
BH = 92h
Note: this function is identical to AH=12h/BH=12h, except that DESQview will
not pop up a "Programming Error" window, instead returning an error
code in AL (see AH=12h/BH=80h)
SeeAlso: AH=12h/BH=12h,AH=12h/BX=1200h
----------1512--BH93-------------------------
INT 15 - DESQview v2.50+ - SEND MESSAGE WITH ERROR RECOVERY
AH = 12h
BH = 93h
Note: this function is identical to AH=12h/BH=13h, except that DESQview will
not pop up a "Programming Error" window, instead returning an error
code in AL (see AH=12h/BH=80h)
SeeAlso: AH=12h/BH=13h
----------1512--BH94-------------------------
INT 15 - DESQview v2.50+ - SEND MESSAGE WITH ERROR RECOVERY
AH = 12h
BH = 94h
Note: this function is identical to AH=12h/BH=14h, except that DESQview will
not pop up a "Programming Error" window, instead returning an error
code in AL (see AH=12h/BH=80h)
SeeAlso: AH=12h/BH=14h
----------1512--BH95-------------------------
INT 15 - DESQview v2.50+ - SEND MESSAGE WITH ERROR RECOVERY
AH = 12h
BH = 95h
Note: this function is identical to AH=12h/BH=15h, except that DESQview will
not pop up a "Programming Error" window, instead returning an error
code in AL (see AH=12h/BH=80h)
SeeAlso: AH=12h/BH=15h
----------1512--BH96-------------------------
INT 15 - DESQview v2.50+ - SEND MESSAGE WITH ERROR RECOVERY
AH = 12h
BH = 96h
Note: this function is identical to AH=12h/BH=16h, except that DESQview will
not pop up a "Programming Error" window, instead returning an error
code in AL (see AH=12h/BH=80h)
SeeAlso: AH=12h/BH=16h
----------1513-------------------------------
INT 15 - VMiX - "sys_wake" - WAKE SLEEPING PROCESS
AH = 13h
STACK: WORD process ID
Return: AX = status (SYS_OK or SYS_ERROR)
SeeAlso: AH=12h"VMiX"
----------1513-------------------------------
INT 15 - MultiDOS Plus - GET TASK CONTROL BLOCK
AH = 13h
Return: BX:AX -> task control block (see below)
SeeAlso: AH=15h"MultiDOS"
Format of MultiDOS Plus v4.0 task control block:
Offset Size Description
00h DWORD pointer to next TCB
04h 8 BYTEs ASCIZ task name
0Ch 2 BYTEs ???
0Eh WORD task PSP segment
10h WORD abort/suspend flags
12h WORD current screen segment (see AH=0Bh,AH=0Ch)
14h WORD priority level (0000h-FFFEh)
16h WORD time slice counter
18h 2 BYTEs ???
1Ah WORD suspend timer value
1Ch WORD stack segment
1Eh WORD stack pointer
20h WORD display type
22h WORD display memory
24h 2 BYTEs ???
26h WORD termination count
28h WORD equipment flag for BIO10 driver
2Ah BYTE background CRT mode
2Bh WORD screen width in columns
2Dh WORD screen size in bytes
2Fh WORD segment of physical screen memory
31h 16 BYTEs eight cursor positions
41h WORD current cursor shape
43h BYTE active display page
44h WORD CRT controller I/O port base
46h 2 BYTEs ???
48h WORD foreground task flag
4Ah 6 BYTEs ???
50h WORD saved video segment (see AH=0Bh,AH=0Ch)
52h DWORD old INT 22
56h DWORD old INT 23
5Ah DWORD old INT 24
5Eh WORD top of memory for task
60h 4 BYTEs ???
64h WORD DTA segment (see INT 21/AH=1Ah)
66h WORD DTA offset
68h 4 BYTEs ???
6Ch BYTE current ANSI.SYS attribute
6Dh BYTE current ANSI.SYS column
6Eh BYTE current ANSI.SYS row
6Fh BYTE current ANSI.SYS display state
70h BYTE maximum ANSI.SYS columns
71h BYTE current ANSI.SYS page
72h WORD saved ANSI.SYS cursor position
74h BYTE ANSI.SYS parameter buffer index
75h BYTE current ANSI.SYS screen mode
76h BYTE ANSI.SYS wrap flag
77h 6 BYTEs ANSI.SYS parameter buffer
7Dh BYTE ANSI.SYS keyboard DSR state
7Eh 7 BYTEs ANSI.SYS keyboard DSR buffer
85h 3 BYTEs ???
88h 16 BYTEs request header for DOS driver calls
98h 14 BYTEs ???
A6h WORD segment of EMS map if EMS task
A8h WORD flag: task makes EMS calls
AAh WORD EMS handle for task
ACh WORD keyboard shift state
AEh 12 BYTEs ???
BAh WORD TCB of parent if child task
BCh WORD termination code
BEh WORD COM port number
C0h 4 BYTEs ???
C4h WORD current IRQ number
C6h 2 BYTEs ???
C8h WORD miscellaneous flag word
CAh 2 BYTEs ???
CCh DWORD old INT 10
D0h WORD EMS alternate map set number
D2h 414 BYTEs DOS current disk and directory context (optional)
----------1514-------------------------------
INT 15 - VMiX - "sys_clrwindow" - CLEAR WINDOW
AH = 14h
STACK: WORD top left corner of window (high byte = row, low = col)
WORD bottom right corner of window (high = row, low = col)
Return: AX = status (SYS_OK)
Note: clears window to color set with "sys_setcolors" (AH=18h)
SeeAlso: AH=15h"VMiX",AH=16h"VMiX",AH=18h"VMiX",AH=1Fh"VMiX"
----------1514-------------------------------
INT 15 - MultiDOS Plus - CHECK IF MultiDOS FOREGROUND OR BACKGROUND
AH = 14h
Return: AX = current state
0000h MultiDOS Plus command prompt is background task
0001h command prompt is foreground task
SeeAlso: AH=0Bh"MultiDOS"
----------1515-------------------------------
INT 15 - VMiX - "sys_setbwindow" - SET BANNER WINDOW MESSAGE
AH = 15h
STACK: DWORD pointer to ASCIZ banner message for top of screen
Return: AX = status (SYS_OK)
SeeAlso: AH=14h"VMiX",AH=16h"VMiX"
----------1515-------------------------------
INT 15 - MultiDOS Plus - GET SYSTEM BLOCK
AH = 15h
Return: BX:AX -> system block (see below)
SeeAlso: AH=13h"MultiDOS"
Format of MultiDOS Plus 4.0 system block:
Offset Size Description
00h WORD segment of system control block
02h WORD redirection flag set by /NOREDIRECT
04h WORD no-INT 10 flag set by /NO10
06h DWORD old INT 10
0Ah DWORD new INT 10
0Eh DWORD pointer to WORD with current TCB offset (see AH=13h)
12h DWORD pointer to WORD with idle task TCB offset
16h DWORD pointer to WORD with foreground TCB offset
1Ah DWORD pointer to WORD with MultiDOS TCB offset
1Eh WORD Task Control Block size
20h WORD number of TCBs
22h WORD flag: EMS present
24h WORD EMS page frame base segment
26h WORD 16K pages in EMS page frame
28h WORD base segment for conventional memory tasks
2Ah WORD conventional memory size in paragraphs
2Ch DWORD pointer to list of queue pointers
----------1516-------------------------------
INT 15 - VMiX - "sys_setwindow" - SET ROOT WINDOW SIZE AND HOME CURSOR
AH = 16h
STACK: DWORD pointer to I/O Request Packet
WORD top left corner of window (high byte = row, low = col)
WORD bottom right corner of window (high = row, low = col)
Return: AX = status (SYS_OK or SYS_ERROR)
SeeAlso: AH=14h"VMiX",AH=17h"VMiX"
----------1516-------------------------------
INT 15 - MultiDOS Plus - INITIALIZATION
AH = 16h
Note: used internally during initialization; any other calls will cause
unpredicatable results
----------1517-------------------------------
INT 15 - VMiX - "sys_getcolors" - GET CONSOLE WINDOW COLORS
AH = 17h
Return: AH = foreground color
AL = background color
SeeAlso: AH=16h"VMiX",AH=18h"VMiX"
----------1517-------------------------------
INT 15 - MultiDOS Plus - MAP IRQ
AH = 17h
AL = IRQ to map (01h-0Fh)
BX = offset of task control block (see AH=13h) to associate with IRQ
Return: AX = status
0000h successful
other invalid IRQ
Note: the EMS map of the specified TCB is associated with the given interrupt
SeeAlso: AH=18h"MultiDOS",AH=19h"MultiDOS"
----------1518-------------------------------
INT 15 - VMiX - "sys_setcolors" - SET CONSOLE COLORS
AH = 18h
STACK: WORD new background/foreground colors
bits 3-0: foreground
bits 7-4: background
bits 15-8: unused
Return: AX = color
SeeAlso: AH=14h"VMiX",AH=17h"VMiX",AH=19h"VMiX"
----------1518-------------------------------
INT 15 - MultiDOS Plus - UNMAP IRQ
AH = 18h
AL = IRQ to unmap (01h-0Fh)
Return: AX = status
0000h successful
0001h invalid IRQ
Note: results are unpredictable if the IRQ has not been mapped
SeeAlso: AH=17h"MultiDOS",AH=19h"MultiDOS"
----------1519-------------------------------
INT 15 - VMiX v2+ - "sys_setconwn" - SET WINDOW COLORS
AH = 19h
STACK: WORD new background/foreground colors
bits 3-0: foreground
bits 7-4: background
bits 15-8: unused
Return: AX = color
SeeAlso: AH=18h"VMiX"
----------1519-------------------------------
INT 15 - MultiDOS Plus - UNMAP ALL IRQs
AH = 19h
Return: AX destroyed
Note: for MultiDOS internal use only
SeeAlso: AH=17h"MultiDOS",AH=18h"MultiDOS"
----------151A-------------------------------
INT 15 - VMiX v2+ - "sys_sint" - INVOKE SOFTWARE INTERRUPT
AH = 1Ah
STACK: WORD interrupt number
DWORD pointer to register structure
Return: AX = returned flags
----------151A-------------------------------
INT 15 - MultiDOS Plus - MAP SEMAPHORE NAME TO NUMBER
AH = 1Ah
DS:SI -> 8-byte name
Return: AL = status
00h successful
AH = semaphore number (20h-3Fh)
04h out of string space
Notes: all eight bytes of the name are significant
if the name does not already exist, it is added to the name table and
associated with a free semaphore number
names cannot be destroyed
SeeAlso: AH=1Bh"MultiDOS",AH=1Ch"MultiDOS",AH=1Dh"MultiDOS"
----------151B-------------------------------
INT 15 - VMiX v2+ - "sys_blkmov" - MOVE MEMORY BLOCK
AH = 1Bh
STACK: DWORD source address
DWORD destination address
WORD number of words to move
Return: nothing
----------151B-------------------------------
INT 15 - MultiDOS Plus - REQUEST RESOURCE SEMAPHORE BY NAME
AH = 1Bh
DS:SI -> 8-byte name
Return: AH = status
00h successful
02h invalid semaphore number
03h caller already owns semaphore
04h out of string space
Notes: (see AH=01h"MultiDOS")
equivalent to AH=1Ah followed by AH=01h
SeeAlso: AH=01h"MultiDOS",AH=1Ah"MultiDOS",AH=1Ch"MultiDOS",AH=1Dh"MultiDOS"
----------151C-------------------------------
INT 15 - VMiX v2+ - "sys_bitblt" - PUT GRAPHICAL OBJECT AT CURSOR POSITION
AH = 1Ch
STACK: WORD AND/OR pixel with background (00h = OR, 01h = AND)
DWORD pointer to object bitmap
WORD object width in pixels
WORD object height in pixels
Return: nothing
SeeAlso: AH=1Dh"VMiX"
----------151C-------------------------------
INT 15 - MultiDOS Plus - RELEASE RESOURCE SEMAPHORE BY NAME
AH = 1Ch
DS:SI -> 8-byte name
Return: AH = status
00h successful
01h not semaphore owner
02h invalid semaphore number
04h out of string space
Notes: (see AH=02h"MultiDOS")
equivalent to AH=1Ah followed by AH=02h
SeeAlso: AH=02h"MultiDOS",AH=1Ah"MultiDOS",AH=1Bh"MultiDOS",AH=1Dh"MultiDOS"
----------151D-------------------------------
INT 15 - VMiX v2+ - "sys_getfont" - GET CURRENT CONSOLE GRAPHICS FONT
AH = 1Dh
Return: AX = current font number (00h-03h)
SeeAlso: AH=1Ch"VMiX",AH=1Eh"VMiX"
----------151D-------------------------------
INT 15 - MultiDOS Plus - TEST RESOURCE SEMAPHORE BY NAME
AH = 1Dh
DS:SI -> 8-byte name
Return; AH = status
00h semaphore not in use
01h semaphore owned by another task
02h invalid semaphore number
03h caller owns semaphore
04h out of string space
Notes: (see AH=10h"MultiDOS")
equivalent to AH=1Ah followed by AH=10h
SeeAlso: AH=10h"MultiDOS",AH=1Ah"MultiDOS",AH=1Bh"MultiDOS",AH=1Ch"MultiDOS"
----------151E-------------------------------
INT 15 - VMiX v2+ - "sys_setfont" - SET CONSOLE GRAPHICS FONT
AH = 1Eh
STACK: WORD new font number (00h-03h)
Return: AX = current font number (00h-03h)
SeeAlso: AH=1Dh"VMiX"
----------151E00-----------------------------
INT 15 - MultiDOS Plus - CLEAR EVENT COUNTER
AX = 1E00h
DX = event/trigger number (00h-3Fh)
Return: AH = status
00h successful
SeeAlso: AX=1E01h,AX=1E02h
----------151E01-----------------------------
INT 15 - MultiDOS Plus - TRIGGER EVENT
AX = 1E01h
DX = event/trigger number (00h-3Fh)
Return: AH = status
00h successful
01h invalid event/trigger number
Notes: schedules any task waiting for event; if no task is waiting, the event
counter is incremented (and will roll over if it was 65535)
may be invoked by interrupt handler
SeeAlso: AX=1E00h,AX=1E02h
----------151E02-----------------------------
INT 15 - MultiDOS Plus - WAIT FOR EVENT
AX = 1E02h
DX = event/trigger number (00h-3Fh)
Return: AH = status
00h successful
01h invalid event/trigger number
Note: if the event counter is zero, the task is suspended until the event is
triggered with AX=1E01h; else, the counter is decremented and the
call returns immediately
SeeAlso: AX=1E00h,AX=1E01h
----------151F-------------------------------
INT 15 - VMiX v2.???+ - "sys_scrollwin" - SCROLL WINDOW
AH = 1Fh
STACK: WORD top left corner of window (high byte = row, low = col)
WORD bottom right corner of window
Return: AX = status (SYS_OK)
SeeAlso: AH=14h"VMiX",AH=18h"VMiX"
----------151F-------------------------------
INT 15 - MultiDOS Plus v4.01 - GET MEMORY PARAMETERS
AH = 1Fh
Return: BX = first segment of conventional memory
DX = first segment of EMS swap frame into which MultiDOS will load
programs
----------1520-------------------------------
INT 15 - MultiDOS Plus v4.01 - CHECK IF MULTITASKING ENABLED
AH = 20h
Return: AX = current state
0000h multitasking enabled
other TCB of task that disabled multitasking
SeeAlso: AH=0Dh"MultiDOS",AH=13h"MultiDOS"
----------152000-----------------------------
INT 15 - DOS 3+ PRINT.COM - DISABLE CRITICAL REGION FLAG
AX = 2000h
SeeAlso: AX=2001h
----------152001-----------------------------
INT 15 - DOS 3+ PRINT.COM - SET CRITICAL REGION FLAG
AX = 2001h
ES:BX -> byte which is to be incremented while in a DOS call
SeeAlso: AX=2000h
----------152010-----------------------------
INT 15 - OS HOOK - SETUP SYSREQ ROUTINE (AT,XT286,PS50+)
AX = 2010h
???
Return: ???
SeeAlso: AX=2011h
----------152011-----------------------------
INT 15 - OS HOOK - COMPLETION OF SYSREQ FUNCTION (AT,XT286,PS50+)
AX = 2011h
???
Return: ???
SeeAlso: AX=2010h
----------1521-------------------------------
INT 15 - SYSTEM - POWER-ON SELF-TEST ERROR LOG (PS50+)
AH = 21h
AL = subfunction
00h read POST log
01h write POST log
BH = device ID
BL = error code
Return: CF set on error
AH = status (00h OK, 01h list full, 80h invalid cmd, 86h unsupported)
if function 00h:
BX = number of error codes stored
ES:DI -> error log
Note: the log is a series of words, the first byte of which identifies the
error code and the second the device.
----------1522-------------------------------
INT 15 U - SYSTEM - LOCATE ROM BASIC (later PS/2's only)
AH = 22h
Return: CF set on error
AH = status
CF clear on success:
ES -> segment of ROM BASIC
----------152400-----------------------------
INT 15 - Qualitas 386MAX v6.01 - TURN ON ???
AX = 2400h
Return: CF clear
AH = 00h
SeeAlso: AX=2401h,AX=2402h
----------152401-----------------------------
INT 15 - Qualitas 386MAX v6.01 - TURN OFF ???
AX = 2401h
Return: CF clear
AH = 00h
SeeAlso: AX=2400h,AX=2402h
----------152402-----------------------------
INT 15 - Qualitas 386MAX v6.01 - GET STATE OF ???
AX = 2402h
Return: CF clear
AH = 00h
AL = current state (00h off, 01h on)
SeeAlso: AX=2400h,AX=2401h
----------152403-----------------------------
INT 15 - Qualitas 386MAX v6.01 - GET ???
AX = 2403h
???
Return: CF clear
AH = 00h
BX = bit flags???
bit 0: ???
bit 1: ???
Note: reportedly also used by some PS/2 models
----------1540-------------------------------
INT 15 - SYSTEM - READ/MODIFY PROFILES (CONVERTIBLE)
AH = 40h
AL = subfunction
00h get system profile in CX and BX
01h set system profile from CX and BX
02h get internal modem profile in BX
03h set internal modem profile from BX
----------154000-----------------------------
INT 15 - Compaq SLT/286 or Portable 386 - READ LCD/PLASMA TIMEOUT
AX = 4000h
Return: AX = 4000h
CL = 00h timeout disabled
else timeout in minutes
SeeAlso: AX=4001h,AX=4600h
----------154001CL00-------------------------
INT 15 - Compaq SLT/286 or Portable 386 - SET LCD/PLASMA TIMEOUT
AX = 4001h
CL = 00h timeout disabled
else timeout in minutes
Return: AL = 00h timeout modified
01h timeout cannot be modified
40h timeout cannot be modified
CL = 00h timeout disabled
else timeout in minutes
SeeAlso: AX=4000h,AX=4601h
----------1541-------------------------------
INT 15 - SYSTEM - WAIT ON EXTERNAL EVENT (CONVERTIBLE)
AH = 41h
AL = condition type
bits 0-2: condition to wait for
0 any external event
1 compare and return if equal
2 compare and return if not equal
3 test and return if not zero
4 test and return if zero
bit 3: reserved
bit 4: 1=port address, 0=user byte
bits 5-7: reserved
BH = condition compare or mask value
BL = timeout value times 55 milliseconds
00h means no timeout
DX = I/O port address if AL bit 4 set
ES:DI -> user byte if AL bit 4 clear
----------1542-------------------------------
INT 15 - SYSTEM - REQUEST POWER OFF (CONVERTIBLE,HP 95LX)
AH = 42h
AL = 00h to use system profile
01h to force suspend regardless of system profile
Note: the HP 95LX apparently suspends regardless of the value in AL; on
power-up, execution will resume following the instruction calling
this function
SeeAlso: AH=44h
----------154280-----------------------------
INT 15 - Compaq SLT/286 - ENTER STANDBY
AX = 4280h
Return: AH = 42h
CF clear if successful
CF set if unable to enter standby
SeeAlso: AX=4600h,AX=5307h/BX=0001h/CX=0001h
----------1543-------------------------------
INT 15 - SYSTEM - READ SYSTEM STATUS (CONVERTIBLE)
AH = 43h
Return: AL = status bits
bit 0: LCD detached
bit 1: reserved
bit 2: RS232/parallel adapter powered on
bit 3: internal modem powered on
bit 4: power activated by alarm
bit 5: standby power lost
bit 6: external power in use
bit 7: power low
----------1544-------------------------------
INT 15 - SYSTEM - (DE)ACTIVATE INTERNAL MODEM POWER (CONVERTIBLE)
AH = 44h
AL = 00h to power off
01h to power on
SeeAlso: AH=42h
----------154600-----------------------------
INT 15 - Compaq SLT/286 - READ POWER CONSERVATION/MODEM CONFIGURATION
AX = 4600h
Return: AH = modem configuration information
bit 0 powerup state
0 off
1 on
1 modem installed
2 IRQ line assignment
0 IRQ 4
1 IRQ 3
3 COM port assignment
0 = COM 2
1 = COM 1
4 modem state
0 not assigned
1 assigned
5 modem is on
AL = power conservation status information
bit 0 power source (0 internal, 1 external)
1-2 low battery state
00 no low battery condition
01 low battery 1
10 reserved
11 low battery 2
3-4 power conservation mode
00 automatic
01 on
10 off
11 reserved
BH = default system inactivity timeout (1-21 minutes)
BL = current system inactivity timeout (1-21 minutes)
CH = default video display inactivity timeout (1-63 minutes)
CL = current video display inactivity timeout (1-63 minutes)
DH = default fixed disk drive inactivity timeout (1-21 minutes)
DL = current fixed disk drive inactivity timeout (1-21 minutes)
SeeAlso: AX=4280h,AX=4601h,INT 77
----------154601-----------------------------
INT 15 - Compaq SLT/286 - Modify Power Conservation/Modem Configuration
AX = 4601h
BL = system inactivity timeout (1-21 minutes)
= FFh do not change
CL = video display inactivity timeout (1-63 minutes)
= FFh do not change
DL = current fixed disk drive inactivity timeout (1-21 minutes)
= FFh do not change
DH = 00h turn modem OFF
= 01h turn modem ON
= FFh do not change modem state
Return: CF clear if successful
AH = 00h
BL = current system inactivity timeout (1-21 minutes)
CL = current video display inactivity timeout (1-63 minutes)
DL = current fixed disk drive inactivity timeout (1-21 minutes)
DH = FFh modem state unchanged
= 00h modem turned OFF
= 01h modem turned ON
CF set on error
AH = 01h input is out of range
= 02h - No modem present
SeeAlso: AX=4600h,INT 77
----------154900-----------------------------
INT 15 - Far East MSDOS - GET DOS TYPE
AX = 4900h
Return: CF clear if successful
AH = 00h
BL = type of DOS running
00h DOS/V
01h DOS/J or DOS/K (early IBM Japan versions of MSDOS)
CF set on error
AH = 86h (function not supported)
Note: in practice, DOS/J returns AH=86h; AX DOS does not support this call
SeeAlso: INT 21/AH=30h
----------154DD4-----------------------------
INT 15 - HP 95LX - INSTALLATION CHECK
AX = 4DD4h
Return: BX = 4850h ("HP") if HP 95LX
CX = ??? (0101h)
DL = ??? (00h)
SeeAlso: INT 0B"HP 95LX",INT 0F"HP 95LX",INT 5F/AH=00h,INT 60/DI=0100h
SeeAlso: INT 61"HP 95LX"
----------154E-------------------------------
INT 15 - HP 95LX - ENABLE/DISABLE LIGHT SLEEP
AH = 4Eh
AL = light sleep
00h disabled
01h enabled
Note: when light sleep is disabled, the system will continue running at full
speed; when enabled, it may automatically slow to conserve batteries
SeeAlso: INT 06"HP 95LX",INT 60/DI=0100h
----------154F-------------------------------
INT 15 C - KEYBOARD - KEYBOARD INTERCEPT (AT model 3x9,XT2,XT286,CONV,PS)
AH = 4Fh
AL = hardware scan code
CF set
Return: CF set
AL = hardware scan code
CF clear
scan code should be ignored
Note: called by INT 9 handler to translate scan codes; the INT 09 code does
not examine the scan code it reads from the keyboard until after
this function returns. This permits software to rearrange the
keyboard; for example, swapping the CapsLock and Control keys, or
turning the right Shift key into Enter.
SeeAlso: INT 09,INT 15/AH=C0h
----------1550-------------------------------
INT 15 - VMIX v2.???+ - "sys_vm_page" - SET NEW VIRTUAL PAGE TABLE
AH = 50h
BX = segment of page directory table
CX = page number of page table
SeeAlso: AH=10h"VMiX",AH=51h"VMiX",AH=52h"VMiX"
----------1551-------------------------------
INT 15 - VMiX v2.???+ - "sys_vm_func" - EXECUTE FUNCTION IN PROTECTED MODE
AH = 51h
STACK: DWORD selector:offset of function
Return: registers as returned by function
Note: executes function with privilege level 0 (highest privilege)
SeeAlso: AH=10h"VMiX",AH=52h"VMiX"
----------1552-------------------------------
INT 15 - VMiX v2.???+ - "sys_vm_init" - INITIALIZE PROTECTED-MODE ENVIRONMENT
AH = 52h
SeeAlso: AH=50h"VMiX",AH=51h"VMiX"
----------155300BX0000-----------------------
INT 15 - Advanced Power Management Specification - INSTALLATION CHECK
AX = 5300h
BX = 0000h (device ID of system BIOS)
Return: CF clear if successful
AH = major version (BCD)
AL = minor version (BCD)
BX = 504Dh ("PM")
CX = flags
bit 0: 16-bit protected mode interface supported
bit 1: 32-bit protected mode interface supported
bit 2: CPU idle call reduces processor speed
bit 3: BIOS power management disabled
bits 4-7 reserved
CF set on error
AH = error code (86h) (see below)
Values for error code:
01h power management functionality disabled
02h interface connection already in effect
03h interface not connected
04h real-mode interface not connected
05h 16-bit protected-mode interface already connected
06h 16-bit protected-mode interface not supported
07h 32-bit protected-mode interface already connected
08h 32-bit protected-mode interface not supported
09h unrecognized device ID
0Ah invalid parameter value in CX
0Bh-1Fh reserved for other interface and general errors
20h-3Fh reserved for CPU errors
40h-5Fh reserved for device errors
60h can't enter requested state
61h-7Fh reserved for other system errors
80h no power management events pending
81h-85h reserved for other power management event errors
86h APM not present
87h-9Fh reserved for other power management event errors
----------155301BX0000-----------------------
INT 15 - Advanced Power Management Specification - CONNECT REAL-MODE INTERFACE
AX = 5301h
BX = 0000h (device ID of system BIOS)
Return: CF clear if successful
CF set on error
AH = error code (02h,09h) (see AX=5300h)
SeeAlso: AX=5302h,AX=5303h,AX=5304h
----------155302BX0000-----------------------
INT 15 R - Advanced Power Management Spec - CONNECT 16-BIT PROTMODE INTERFACE
AX = 5302h
BX = 0000h (device ID of system BIOS)
Return: CF clear if successful
AX = real-mode segment base address of protected-mode 16-bit code
segment
BX = offset of entry point
CX = real-mode segment base address of protected-mode 16-bit data
segment
CF set on error
AH = error code (05h,06h,09h) (see AX=5300h)
Notes: the caller must initialize two consecutive descriptors with the
returned segment base addresses; these descriptors must be valid
whenever the protected-mode interface is called, and will have
their limits arbitrarily set to 64K.
the protected mode interface is invoked by making a far call with the
same register values as for INT 15; it must be invoked while CPL=0,
the code segment descriptor must have a DPL of 0, the stack must be
in a 16-bit segment and have enough room for BIOS use and possible
interrupts, and the current I/O permission bit map must allow access
to the I/O ports used for power management.
functions 00h-03h are not available from protected mode
SeeAlso: AX=5301h,AX=5303h,AX=5304h
----------155303BX0000-----------------------
INT 15 - Advanced Power Management Spec - CONNECT 32-BIT PROTMODE INTERFACE
AX = 5303h
BX = 0000h (device ID of system BIOS)
Return: CF clear if successful
AX = real-mode segment base address of protected-mode 32-bit code
segment
EBX = offset of entry point
CX = real-mode segment base address of protected-mode 16-bit code
segment
DX = real-mode segment base address of protected-mode 16-bit data
segment
CF set on error
AH = error code (07h,08h,09h) (see AX=5300h)
Notes: the caller must initialize three consecutive descriptors with the
returned segment base addresses for 32-bit code, 16-bit code, and
16-bit data, respectively; these descriptors must be valid whenever
the protected-mode interface is called, and will have their limits
arbitrarily set to 64K.
the protected mode interface is invoked by making a far call to the
32-bit code segment with the same register values as for INT 15; it
must be invoked while CPL=0, the code segment descriptor must have a
DPL of 0, the stack must be in a 32-bit segment and have enough room
for BIOS use and possible interrupts, and the current I/O permission
bit map must allow access to the I/O ports used for power management.
functions 00h-03h are not available from protected mode
SeeAlso: AX=5301h,AX=5302h,AX=5304h
----------155304BX0000-----------------------
INT 15 - Advanced Power Management Specification - DISCONNECT INTERFACE
AX = 5304h
BX = 0000h (device ID of system BIOS)
Return: CF clear if successful
CF set on error
AH = error code (03h,09h) (see AX=5300h)
SeeAlso: AX=5301h,AX=5302h,AX=5303h
----------155305-----------------------------
INT 15 - Advanced Power Management Specification - CPU IDLE
AX = 5305h
Return: after system leaves idle state
CF clear
Notes: call when the system is idle and should be suspended until the next
system event or interrupt
should not be called from within a hardware interrupt handler to avoid
reentrance problems
if an interrupt causes the system to resume normal processing, the
interrupt may or may not have been handled when the BIOS returns
from this call; thus, the caller should allow interrupts on return
interrupt handlers may not retain control if the BIOS allows
interrupts while in idle mode even if they are able to determine
that they were called from idle mode
the caller should issue this call continuously in a loop until it needs
to perform some processing of its own
SeeAlso: AX=1000h,AX=5306h,INT 2F/AX=1680h
----------155306-----------------------------
INT 15 - Advanced Power Management Specification - CPU BUSY
AX = 5306h
Return: CF clear
Notes: called to ensure that the system runs at full speed even on systems
where the BIOS is unable to recognize increased activity (especially
if interrupts are hooked by other programs and not chained to the
BIOS)
this call may be made even when the system is already running at full
speed, but it will create unnecessary overhead
should not be called from within a hardware interrupt handler to avoid
reentrance problems
SeeAlso: AX=5305h
----------155307-----------------------------
INT 15 - Advanced Power Management Specification - SET POWER STATE
AX = 5307h
BX = device ID (see below)
CX = system state ID
0000h ready (not supported for device ID 0001h)
0001h stand-by
0002h suspend
0003h off (not supported for device ID 0001h)
0004h-FFFFh reserved
Return: CF clear if successful
CF set on error
AH = error code (01h,09h,0Ah,60h) (see AX=5300h)
Note: should not be called from within a hardware interrupt handler to avoid
reentrance problems
Values for device IDs:
0000h system BIOS
0001h all devices for which the system BIOS manages power
01xxh display (01FFh for all attached display devices)
02xxh secondary storage (02FFh for all attached secondary storage devices)
03xxh parallel ports (03FFh for all attached parallel ports)
04xxh serial ports (04FFh for all attached serial ports)
0500h-FFFFh reserved
----------155307BX0001-----------------------
INT 15 - Advanced Power Management Specification - SYSTEM STAND-BY
AX = 5307h
BX = 0001h
CX = 0001h
Return: CF clear
Notes: puts the entire system into stand-by mode; normally called in response
to a System Stand-by Request notification after any necessary
processing, but may also be invoked at the caller's discretion
should not be called from within a hardware interrupt handler to avoid
reentrance problems
the stand-by state is typically exited on an interrupt
SeeAlso: AX=4280h,AX=5307h/BX=0001h/CX=0002h,AX=530Bh
----------155307BX0001-----------------------
INT 15 - Advanced Power Management Specification - SUSPEND SYSTEM
AX = 5307h
BX = 0001h
CX = 0002h
Return: after system is resumed
CF clear
Notes: puts the entire system into a low-power suspended state; normally
called in response to a Suspend System Request notification after
any necessary processing, but may also be invoked at the caller's
discretion
should not be called from within a hardware interrupt handler to avoid
reentrance problems
the caller may need to update its date and time values because the
system could have been suspended for a long period of time
SeeAlso: AX=5307h/BX=0001h/CX=0001h,AX=530Bh
----------155308BXFFFF-----------------------
INT 15 - Advanced Power Management Spec - ENABLE/DISABLE POWER MANAGEMENT
AX = 5308h
BX = FFFFh
CX = new state
0000h disabled
0001h enabled
Return: CF clear if successful
CF set on error
AH = error code (01h,09h,0Ah) (see AX=5300h)
Notes: when power management is disabled, the system BIOS will not
automatically power down devices, enter stand-by or suspended mode,
or perform any power-saving actions in response to AX=5305h calls
should not be called from within a hardware interrupt handler to avoid
reentrance problems
SeeAlso: AX=5309h
----------155309BXFFFF-----------------------
INT 15 - Advanced Power Management Specification - RESTORE POWER-ON DEFAULTS
AX = 5309h
BX = FFFFh
Return: CF clear if successful
CF set on error
AH = error code (09h) (see AX=5300h)
Note: should not be called from within a hardware interrupt handler to avoid
reentrance problems
SeeAlso: AX=5308h
----------15530ABX0001-----------------------
INT 15 - Advanced Power Management Specification - GET POWER STATUS
AX = 530Ah
BX = 0001h
Return: CF clear if successful
BH = AC line status
00h off-line
01h on-line
FFh unknown
other reserved
BL = battery status
00h high
01h low
02h critical
03h charging
FFh unknown
other reserved
CL = remaining battery life
00h-64h (0-100) percentage of full charge
FFh unknown
CF set on error
AH = error code (09h) (see AX=5300h)
Note: should not be called from within a hardware interrupt handler to avoid
reentrance problems
----------15530B-----------------------------
INT 15 - Advanced Power Management Specification - GET POWER MANAGEMENT EVENT
AX = 530Bh
Return: CF clear if successful
BX = event code
0001h system stand-by request
0002h system suspend request
0003h normal resume system notification
0004h critical resume system notification
0005h battery low notification
CF set on error
AH = error code (03h,80h) (see AX=5300h)
Notes: although power management events are often asynchronous, notification
will not be made until polled via this call to permit software to
only receive event notification when it is prepared to process
power management events; since these events are not very time-
critical, it should be sufficient to poll once or twice per second
the critical resume notification is made after the system resumes
from an emergency suspension; normally, the system BIOS only notifies
its partner that it wishes to suspend and relies on the partner to
actually request the suspension, but no notification is made on an
emergency suspension
should not be called from within a hardware interrupt handler to avoid
reentrance problems
SeeAlso: AX=5307h,AX=5307h/BX=0001h/CX=0001h,AX=5307h/BX=0001h/CX=0002h
----------155400-----------------------------
INT 15 C - Omniview Multitasker - INSTALLATION NOTIFICATION
AX = 5400h
ES:BX -> device information tables
DI:DX -> dispatcher entry point
Note: called by OmniView to notify programs loaded before OmniView of state
changes inside OmniView
SeeAlso: AX=5407h,INT 2F/AX=DE00h
----------155401-----------------------------
INT 15 C - Omniview Multitasker - PROCESS CREATION
AX = 5401h
ES:BX = process handle
Note: called by OmniView to notify programs loaded before OmniView of state
changes inside OmniView
SeeAlso: AX=5402h,INT 2F/AX=DE04h
----------155402-----------------------------
INT 15 C - Omniview Multitasker - PROCESS DESTRUCTION
AX = 5402h
ES:DX = process handle
Note: called by OmniView to notify programs loaded before OmniView of state
changes inside OmniView
SeeAlso: AX=5401h,INT 2F/AX=DE05h
----------155403-----------------------------
INT 15 C - Omniview Multitasker - SAVE
AX = 5403h
ES:DX = process swapping out
Note: called by OmniView to notify programs loaded before OmniView of state
changes inside OmniView
SeeAlso: AX=5404h,INT 2F/AX=DE08h
----------155404-----------------------------
INT 15 C - Omniview Multitasker - RESTORE
AX = 5404h
ES:DX = process swapping in
Note: called by OmniView to notify programs loaded before OmniView of state
changes inside OmniView
SeeAlso: AX=5403h,INT 2F/AX=DE09h
----------155405-----------------------------
INT 15 C - Omniview Multitasker - SWITCHING TO BACKGROUND
AX = 5405h
ES:DX = process swapping in
Note: called by OmniView to notify programs loaded before OmniView of state
changes inside OmniView
SeeAlso: AX=5406h
----------155406-----------------------------
INT 15 C - Omniview Multitasker - SWITCHING TO FOREGROUND
AX = 5406h
ES:DX = process swapping in
Note: called by OmniView to notify programs loaded before OmniView of state
changes inside OmniView
SeeAlso: AX=5405h
----------155407-----------------------------
INT 15 C - Omniview Multitasker - EXIT NOTIFICATION
AX = 5407h
Note: called by OmniView to notify programs loaded before OmniView of state
changes inside OmniView
SeeAlso: AX=5400h,INT 2F/AX=DE03h
----------1580-------------------------------
INT 15 C - OS HOOK - DEVICE OPEN (AT,XT286,PS)
AH = 80h
BX = device ID
CX = process ID
CF clear
Return: CF clear if successful
AH = 00h
CF set on error
AH = status
80h invalid command (PC,PCjr)
86h function not supported (XT)
Note: this function should be hooked by a multitasker which wishes to keep
track of device ownership; the default BIOS handler merely returns
successfully
SeeAlso: AH=81h,AH=82h
----------1581-------------------------------
INT 15 C - OS HOOK - DEVICE CLOSE
AH = 81h
BX = device ID
CX = process ID
CF clear
Return: CF clear if successful
AH = 00h
CF set on error
AH = status (see AH=80h)
Note: this function should be hooked by a multitasker which wishes to keep
track of device ownership; the default BIOS handler merely returns
successfully
SeeAlso: AH=80h,AH=82h
----------1582-------------------------------
INT 15 C - OS HOOK - PROGRAM TERMINATION
AH = 82h
BX = process ID
CF clear
Return: CF clear if successful
AH = 00h
CF set on error
AH = status (see AH=80h)
Notes: closes all devices opened by the given process ID with function 80h
this function should be hooked by a multitasker which wishes to keep
track of device ownership; the default BIOS handler merely returns
successfully
SeeAlso: AH=80h,AH=81h
----------1583-------------------------------
INT 15 - BIOS - SET EVENT WAIT INTERVAL (AT,PS50+)
AH = 83h
AL = subfunction
00h set interval
CX:DX = microseconds to delay
ES:BX -> byte whose high bit is to be set at end of interval
01h cancel wait interval
Return: CF set on error or function already busy
AH = status
80h invalid command (PC,PCjr)
86h function not supported (XT and later)
CF clear if successful
Note: the resolution of the wait period is 977 microseconds on most systems
because most BIOSes use the 1/1024 second fast interrupt from the AT
real-time clock chip which is available on INT 70
SeeAlso: AH=86h,INT 70
----------1584-------------------------------
INT 15 - BIOS - JOYSTICK SUPPORT (XT after 11/8/82,AT,XT286,PS)
AH = 84h
DX = subfunction
0000h read joystick switches
Return: AL bits 7-4 = switch settings
0001h read positions of joysticks
Return: AX = X position of joystick A
BX = Y position of joystick A
CX = X position of joystick B
DX = Y position of joystick B
Return: CF set on error
AH = status
80h invalid command (PC,PCjr)
86h function not supported (other)
CF clear if successful
Notes: if no game port is installed, subfunction 0000h returns AL=00h (all
switches open) and subfunction 0001h returns AX=BX=CX=DX=0000h
a 250kOhm joystick typically returns 0000h-01A0h
----------1585-------------------------------
INT 15 C - OS HOOK - SysRq KEY ACTIVITY (AT,PS)
AH = 85h
AL = 00h SysRq key pressed
= 01h SysRq key released
CF clear
Return: CF clear if successful
AH = 00h
CF set on error
AH = status (see AH=84h)
Notes: called by keyboard decode routine
the default handler simply returns successfully; programs which wish
to monitor the SysRq key must hook this call
SeeAlso: INT 09
----------1586-------------------------------
INT 15 - BIOS - WAIT (AT,PS)
AH = 86h
CX:DX = interval in microseconds
Return: CF clear if successful (wait interval elapsed)
CF set on error or AH=83h wait already in progress
AH = status (see AH=84h)
Note: the resolution of the wait period is 977 microseconds on most systems
because most BIOSes use the 1/1024 second fast interrupt from the AT
real-time clock chip which is available on INT 70
SeeAlso: AH=83h,INT 70
----------1587-------------------------------
INT 15 - SYSTEM - COPY EXTENDED MEMORY
AH = 87h
CX = number of words to copy (max 8000h)
ES:SI -> global descriptor table
Return: CF set on error
CF clear if successful
AH = status
00h source copied into destination
01h parity error
02h interrupt error
03h address line 20 gating failed
80h invalid command (PC,PCjr)
86h unsupported function (XT,PS30)
Notes: copy is done in protected mode with interrupts disabled
this function is incompatible with the OS/2 compatibility box
SeeAlso: AH=88h,AH=89h
Format of global descriptor table:
Offset Size Description
00h 16 BYTEs zeros
10h WORD source segment length in bytes (2*CX-1 or greater)
12h 3 BYTEs 24-bit linear source address, low byte first
15h BYTE source segment access rights (93h)
16h WORD zero
18h WORD destination segment length in bytes (2*CX-1 or greater)
1Ah 3 BYTEs 24-bit linear destination address, low byte first
1Dh BYTE destination segment access rights (93h)
1Eh 18 BYTEs zeros
----------1588-------------------------------
INT 15 - SYSTEM - GET EXTENDED MEMORY SIZE (286+)
AH = 88h
Return: CF clear if successful
AX = number of contiguous KB starting at absolute address 100000h
CF set on error
AH = status
80h invalid command (PC,PCjr)
86h unsupported function (XT,PS30)
Note: TSRs which wish to allocate extended memory to themselves often hook
this call, and return a reduced memory size. They are then free to
use the memory between the new and old sizes at will.
SeeAlso: AH=87h
----------1589-------------------------------
INT 15 - SYSTEM - SWITCH TO PROTECTED MODE
AH = 89h
BL = interrupt number of IRQ0 (IRQ1-7 use next 7 interrupts)
BH = interrupt number of IRQ8 (IRQ9-F use next 7 interrupts)
ES:SI -> GDT for protected mode
offset 0h null descriptor (initialize to zeros)
8h GDT descriptor
10h IDT descriptor
18h DS
20h ES
28h SS
30h CS
38h uninitialized, used to build descriptor for BIOS CS
CX = offset into protected-mode CS to jump to
Return: CF set on error
AH = FFh error enabling address line 20
CF clear if successful
AH = 00h
in protected mode at specified address
Note: BL and BH must be multiples of 8
SeeAlso: AH=87h,AH=88h,INT 67/AX=DE0Ch
----------1590-------------------------------
INT 15 - OS HOOK - DEVICE BUSY (AT,PS)
AH = 90h
AL = device type
00h disk
01h diskette
02h keyboard
03h PS/2 pointing device
21h waiting for keyboard input (Phoenix BIOS)
80h network
FBh digital sound (Tandy)
FCh disk reset (PS)
FDh diskette motor start
FEh printer
ES:BX -> request block for type codes 80h through BFh
CF clear
Return: CF set if wait time satisfied
CF clear if driver must perform wait
AH = 00h
Notes: type codes are allocated as follows:
00-7F non-reentrant devices; OS must arbitrate access
80-BF reentrant devices; ES:BX points to a unique control block
C0-FF wait-only calls, no complementary INT 15/AH=91h call
floppy and hard disk BIOS code uses this call to implement a timeout;
for device types 00h and 01h, a return of CF set means that the
timeout expired before the disk responded.
this function should be hooked by a multitasker to allow other tasks
to execute while the BIOS is waiting for I/O completion; the default
handler merely returns with AH=00h and CF clear
SeeAlso: AH=91h,INT 13/AH=00h,INT 17/AH=00h,INT 1A/AH=83h
----------1591-------------------------------
INT 15 - OS HOOK - DEVICE POST (AT,PS)
AH = 91h
AL = device type (see AH=90h)
ES:BX -> request block for type codes 80h through BFh
CF clear
Return: AH = 00h
Note: this function should be hooked by a multitasker to allow other tasks
to execute while the BIOS is waiting for I/O completion; the default
handler merely returns with AH=00h and CF clear
SeeAlso: AH=90h
----------15BC-------------------------------
INT 15 - Phoenix 386 BIOS - DETERMINE CPU SPEED
AH = BCh
Return: CF clear
BYTE 0040h:00B0h set to ??? (43 on my 386/33)
Note: reads system timer channel 0 twice, then does calculations on returned
values
----------15BF00-----------------------------
INT 15 - Rational Systems DOS/16M - ???
AX = BF00h
???
Return: ???
Note: under DESQview/X 1.02 DVDOS4GX.DVR, this call is identical to AX=BF02h
SeeAlso: AX=BF02h
----------15BF01-----------------------------
INT 15 - Rational Systems DOS/16M - ???
AX = BF01h
???
Return: ???
Notes: under DESQview/X 1.02 DVDOS4GX.DVR, this call is identical to AX=BF02h
called by DOS/4GW
SeeAlso: AX=BF00h,AX=BF02h
----------15BF02DX0000-----------------------
INT 15 - Rational Systems DOS/16M - INSTALLATION CHECK
AX = BF02h
DX = 0000h
Return: DX = nonzero if installed
DX:SI -> XBRK structure (see below)
Note: this function is also supported by DOS/4G
SeeAlso: AX=BF01h,AX=BFDCh,AX=BFDEh/BX=0000h
SeeAlso: INT 21/AH=FFh/DH=0Eh,INT 2F/AH=A1h,INT 2F/AX=F100h,INT 2F/AX=FBA1h
Format of XBRK structure:
Offset Size Description
00h DWORD linear address of first available byte
04h DWORD linear address of last available byte + 1 ???
08h DWORD real-mode address of XBRK structure???
0Ch DWORD ???
10h 2 BYTEs ???
12h WORD segment of ???
14h 8 BYTEs ???
1Ch 512 BYTEs protected-mode IDT
21Ch N BYTEs protected-mode GDT
----------15BF03-----------------------------
INT 15 - Rational Systems DOS/4GW - UNINSTALL???
AX = BF03h
BX = PSP segment of extender
???
Return: ???
Note: if BX is not the PSP segment of the extender, it passes the call down
the INT 15 chain; this allows nested instances of the extender
SeeAlso: AX=BF06h
----------15BF04-----------------------------
INT 15 - Rational Systems DOS/4GW - ???
AX = BF04h
BX = PSP segment of extender
Return: nothing???
Notes: if BX is not the PSP segment of the extender, it passes the call down
the INT 15 chain; this allows nested instances of the extender
grabs INT 2Fh and installs handlers for INT 2F/AX=1605h-1607h
SeeAlso: INT 2F/AX=1607h/BX=22C0h
----------15BF05-----------------------------
INT 15 - Rational Systems DOS/4GW - INITIALIZE PROTECTED-MODE INTERFACE
AX = BF05h
BX = PSP segment of extender
Return: nothing???
Notes: if BX is not the PSP segment of the extender, it passes the call down
the INT 15 chain; this allows nested instances of the extender
calls INT 67/AX=DE01h if ???
----------15BF06-----------------------------
INT 15 - Rational Systems DOS/4GW - ???
AX = BF06h
BX = PSP segment of extender
???
Return: ???
Note: if BX is not the PSP segment of the extender, it passes the call down
the INT 15 chain; this allows nested instances of the extender
SeeAlso: AX=BF03h
----------15BFDCDX0000-----------------------
INT 15 - Rational Systems DOS/4GW - INSTALLATION CHECK
AX = BFDCh
DX = 0000h
SI = 0000h
Return: DX = nonzero if installed
DX:SI -> XBRK structure (see AX=BF02h)
SeeAlso: AX=BF02h
----------15BFDEBX0000-----------------------
INT 15 - DESQview/X - DVDOS4GX.DVR - INSTALLATION CHECK
AX = BFDEh
BX = 0000h
Return: AX = ??? (0003h)
BX = FFFFh
SeeAlso: AX=BF02h
----------15BFDEBX0001-----------------------
INT 15 - DESQview/X 1.02 - DVDOS4GX.DVR - GET PROCESS MANAGER NAME
AX = BFDEh
BX = 0001h
Return: BX = 0000h (success)
CX:DX -> name of process manager executable
SeeAlso: AX=BFDEh/BX=0000h
----------15BFDEBX0002-----------------------
INT 15 - DESQview/X 1.02 - DVDOS4GX.DVR - SET ???
AX = BFDEh
BX = 0002h
CX:DX -> ???
Return: BX = 0000h (success)
SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=0003h
----------15BFDEBX0003-----------------------
INT 15 - DESQview/X 1.02 - DVDOS4GX.DVR - GET ???
AX = BFDEh
BX = 0003h
Return: BX = 0000h (success)
CX:DX -> ???
SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=0002h
----------15BFDEBX0004-----------------------
INT 15 - DESQview/X 1.02 - DVDOS4GX.DVR - ???
AX = BFDEh
BX = 0004h
CL = ???
Return: BX = 0000h (success)
CX:DX -> XBRK structure (see AX=BF02h)
SeeAlso: AX=BFDEh/BX=0000h
----------15BFDEBX0005-----------------------
INT 15 - DESQview/X 1.02 - DVDOS4GX.DVR - ???
AX = BFDEh
BX = 0005h
CX = new value for ???
Return: BX = 0000h (success)
AX = old value of ???
DS:SI -> ??? (if AX nonzero on return)
ES:DI -> ??? (if AX zero on return)
Note: called by DOS4GW.EXE
SeeAlso: AX=BFDEh/BX=0000h
----------15BFDEBX0006-----------------------
INT 15 - DESQview/X 1.02 - DVDOS4GX.DVR - GET ???
AX = BFDEh
BX = 0006h
Return: BX = 0000h (success)
AH = interrupt number??? (BEh)
CX:DX = ???
SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=0007h,INT BE"DESQview"
----------15BFDEBX0007-----------------------
INT 15 - DESQview/X 1.02 - DVDOS4GX.DVR - SET ???
AX = BFDEh
BX = 0007h
CX:DX = ???
Return: BX = 0000h (success)
SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=0006h
----------15BFDEBX0008-----------------------
INT 15 - DESQview/X 1.02 - DVDOS4GX.DVR - ???
AX = BFDEh
BX = 0008h
CX = segment of ???
DS = ???
Return: BX = status
0000h successful
AL = ??? (80h or C0h)
DX = ??? (0603h) if AL=C0h
0001h failed
AX = 0000h
Note: called by DOS4GW.EXE
SeeAlso: AX=BFDEh/BX=0000h
----------15BFDEBX0009-----------------------
INT 15 - DESQview/X 1.02 - DVDOS4GX.DVR - GET PROTECTED MODE PROGRAM LOADER
AX = BFDEh
BX = 0009h
Return: BX = 0000h (success)
CX:DX -> full pathname to LOAD32.EXP
SeeAlso: AX=BFDEh/BX=0000h
----------15BFDEBX000A-----------------------
INT 15 - DESQview/X 1.02 - DVDOS4GX.DVR - DECREMENT ???
AX = BFDEh
BX = 000Ah
Return: BX = 0000h (success)
AX = new value of ??? counter
Notes: also resets a variety of values if the counter goes negative
called by DOS4GW.EXE
SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=000Bh
----------15BFDEBX000B-----------------------
INT 15 - DESQview/X 1.02 - DVDOS4GX.DVR - INCREMENT ???
AX = BFDEh
BX = 000Bh
Return: AX = new value of ??? counter
Note: called by DOS4GW.EXE
SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=000Ah
----------15BFDEBX000C-----------------------
INT 15 - DESQview/X 1.02 - DVDOS4GX.DVR - ???
AX = BFDEh
BX = 000Ch
CL = ???
00h
nonzero
Return: ???
SeeAlso: AX=BFDEh/BX=0000h
----------15BFDEBX000D-----------------------
INT 15 - DESQview/X 1.02 - DVDOS4GX.DVR - ???
AX = BFDEh
BX = 000Dh
???
Return: ???
SeeAlso: AX=BFDEh/BX=0000h
----------15BFDEBX000E-----------------------
INT 15 - DESQview/X 1.02 - DVDOS4GX.DVR - ???
AX = BFDEh
BX = 000Eh
DX:CX -> ???
Return: AX = segment of handle for calling task
BX = ??? (probably destroyed)
DX:CX -> ???
SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=000Fh,AX=BFDEh/BX=0013h
----------15BFDEBX000F-----------------------
INT 15 - DESQview/X 1.02 - DVDOS4GX.DVR - ???
AX = BFDEh
BX = 000Fh
Return: AX = segment of handle for calling task
BX = ??? (probably destroyed)
DX:CX -> ???
Note: identical to AX=BFDEh/BX=000Eh with CX:DX = 0000h:0000h
SeeAlso: AX=BFDEh/BX=000Eh,AX=BFDEh/BX=0010h
----------15BFDEBX0010-----------------------
INT 15 - DESQview/X 1.02 - DVDOS4GX.DVR - GET TASK HANDLE
AX = BFDEh
BX = 0010h
Return: AX = segment of caller's task handle
BX destroyed
SeeAlso: AX=BFDEh/BX=000Fh
----------15BFDEBX0011-----------------------
INT 15 - DESQview/X 1.02 - DVDOS4GX.DVR - GET ???
AX = BFDEh
BX = 0011h
Return: CX = code segment of DVDOS4GX.DVR
BX = ??? (0004h)
SeeAlso: AX=BFDEh/BX=0000h
----------15BFDEBX0012-----------------------
INT 15 - DESQview/X 1.02 - DVDOS4GX.DVR - GET ???
AX = BFDEh
BX = 0012h
Return: DX = code segment of DVDOS4GX.DVR
BX = ??? (012Ch)
CX = ??? (0006h)
SeeAlso: AX=BFDEh/BX=0000h
----------15BFDEBX0013-----------------------
INT 15 - DESQview/X 1.02 - DVDOS4GX.DVR - GET ???
AX = BFDEh
BX = 0013h
Return: DX:CX -> ???
SeeAlso: AX=BFDEh/BX=000Eh
----------15BFDEBX0014-----------------------
INT 15 - DESQview/X 1.02 - DVDOS4GX.DVR - LOCK ??? MAILBOX
AX = BFDEh
BX = 0014h
CX = index of ??? mailbox
(0000h-0004h valid, but no range checking done)
Return: AX,BX destroyed
SeeAlso: AX=BFDEh/BX=0015h,AX=BFDEh/BX=0017h
----------15BFDEBX0015-----------------------
INT 15 - DESQview/X 1.02 - DVDOS4GX.DVR - UNLOCK ??? MAILBOX
AX = BFDEh
BX = 0015h
CX = index of ??? mailbox
(0000h-0004h valid, but no range checking done)
Return: AX,BX destroyed
SeeAlso: AX=BFDEh/BX=0014h,AX=BFDEh/BX=0016h
----------15BFDEBX0016-----------------------
INT 15 - DESQview/X 1.02 - DVDOS4GX.DVR - CHECK IF ??? MAILBOX OWNED
AX = BFDEh
BX = 0016h
CX = index of ??? mailbox
(0000h-0004h valid, but no range checking done)
Return: AX = status
0000h no one owns mailbox
0001h mailbox has an owner
BX destroyed
SeeAlso: AX=BFDEh/BX=0015h,AX=BFDEh/BX=0017h
----------15BFDEBX0017-----------------------
INT 15 - DESQview/X 1.02 - DVDOS4GX.DVR - GET ??? MAILBOX OWNER
AX = BFDEh
BX = 0017h
CX = index of ??? mailbox
(0000h-0004h valid, but no range checking done)
Return: AX = segment of mailbox owner's handle
BX = segment of caller's task handle
SeeAlso: AX=BFDEh/BX=0015h,AX=BFDEh/BX=0016h
----------15BFDEBXFFFD-----------------------
INT 15 - DESQview/X 1.02 - DVDOS4GX.DVR - GET ???
AX = BFDEh
BX = FFFDh
Return: CX:DX = ???
SeeAlso: AX=BFDEh/BX=FFFEh
----------15BFDEBXFFFE-----------------------
INT 15 - DESQview/X 1.02 - DVDOS4GX.DVR - SET ???
AX = BFDEh
BX = FFFEh
CX:DX = ???
SeeAlso: AX=BFDEh/BX=FFFDh
----------15BFDEBXFFFF-----------------------
INT 15 - DESQview/X 1.02 - DVDOS4GX.DVR - NOP
AX = BFDEh
BX = FFFFh
SeeAlso: AX=BFDEh/BX=0000h
----------15C0-------------------------------
INT 15 - SYSTEM - GET CONFIGURATION (XT after 1/10/86,AT mdl 3x9,CONV,XT286,PS)
AH = C0h
Return: CF set if BIOS doesn't support call
CF clear on success
ES:BX -> ROM table (see below)
AH = status
00h successful
86h unsupported function
Notes: the 1/10/86 XT BIOS returns an incorrect value for the feature byte
the configuration table is at F000h:E6F5h in 100% compatible BIOSes
Dell machines contain the signature "DELL" or "Dell" at absolute FE076h
and a model byte at absolute address FE845h
Tandy 1000 machines contain 21h in the byte at F000h:C000h
some AST machines contain the string "COPYRIGHT AST RESEARCH" one byte
past the end of the configuration table
Format of ROM configuration table:
Offset Size Description
00h WORD number of bytes following
02h BYTE model (see below)
03h BYTE submodel (see below)
04h BYTE BIOS revision: 0 for first release, 1 for 2nd, etc.
05h BYTE feature byte 1:
bit 7 = DMA channel 3 used by hard disk BIOS
bit 6 = 2nd 8259 installed
bit 5 = Real-Time Clock installed
bit 4 = INT 15/AH=4Fh called upon INT 9h
bit 3 = wait for external event supported
bit 2 = extended BIOS area allocated (usually at top of RAM)
bit 1 = bus is Micro Channel instead of ISA
bit 0 reserved
06h BYTE feature byte 2:
bit 7 = ???
bit 6 = INT 16/AH=09h (keyboard functionality) supported
bits 5-0 = ???
07h BYTE feature byte 3:
reserved (0)
08h BYTE feature byte 4:
reserved (0)
09h BYTE feature byte 5:
reserved (0) (IBM)
??? (08h) (Phoenix 386 v1.10)
---AWARD BIOS---
0Ah N BYTEs AWARD copyright notice
---Phoenix BIOS---
0Ah BYTE ??? (00h)
0Bh BYTE major version
0Ch BYTE minor version (BCD)
0Dh 4 BYTEs ASCIZ string "PTL" (Phoenix Technologies Ltd)
Values for model/submodel/revision:
Model Submdl Rev BIOS date System
FFh * * 04/24/81 PC (original)
FFh * * 10/19/81 PC (some bugfixes)
FFh * * 10/27/82 PC (HD, 640K, EGA support)
FFh 46h *** ??? Olivetti M15
FEh * * 08/16/82 PC XT
FEh * * 11/08/82 PC XT and Portable
FEh 43h *** ??? Olivetti M240
FEh A6h ??? ??? ??? (checked for by 386MAX v6.01)
FDh * * 06/01/83 PCjr
FCh * * 01/10/84 AT models 068,099 6 MHz 20MB
FCh 00h 01h 06/10/85 AT model 239 6 MHz 30MB
FCh 00h <> 01h ??? 7531/2 Industrial AT
FCh 01h 00h 11/15/85 AT models 319,339 8 MHz, Enh Keyb, 3.5"
FCh 01h 00h 09/17/87 Tandy 3000
FCh 01h 00h 01/15&88 Toshiba T5200/100
FCh 01h 00h 12/26*89 Toshiba T1200/XE
(Those date characters are not typos)
FCh 01h 30h ??? Tandy 3000NL
FCh 01h ??? ??? Compaq 286/386
FCh 02h 00h 04/21/86 PC XT-286
FCh 04h 00h 02/13/87 ** PS/2 Model 50 (10 MHz/1 ws 286)
FCh 04h 03h 04/18/88 PS/2 Model 50Z (10 MHz/0 ws 286)
FCh 05h 00h 02/13/87 ** PS/2 Model 60 (10 MHz 286)
FCh 06h ??? ??? 7552 "Gearbox"
FCh 08h *** ??? Epson, unknown model
FCh 09h 00h ??? PS/2 Model 25 (10 MHz 286)
FCh 09h 02h 06/28/89 PS/2 Model 30-286
FCh 0Bh 00h 02/16/90 PS/1 Model 2011 (10 MHz 286)
FCh 30h *** ??? Epson, unknown model
FCh 31h *** ??? Epson, unknown model
FCh 33h *** ??? Epson, unknown model
FCh 42h *** ??? Olivetti M280
FCh 45h *** ??? Olivetti M380 (XP 1, XP3, XP 5)
FCh 48h *** ??? Olivetti M290
FCh 4Fh *** ??? Olivetti M250
FCh 50h *** ??? Olivetti M380 (XP 7)
FCh 51h *** ??? Olivetti PCS286
FCh 52h *** ??? Olivetti M300
FCh 81h 00h 01/15/88 Phoenix 386 BIOS v1.10 10a
FBh 00h 01h 01/10/86 PC XT, Enh Keyb, 3.5" support
FBh 00h 02h 05/09/86 PC XT
FBh 4Ch *** ??? Olivetti M200
FAh 00h 00h 09/02/86 PS/2 Model 30 (8 MHz 8086)
FAh 00h 01h 12/12/86 PS/2 Model 30
FAh 01h 00h ??? PS/2 Model 25/25L (8 MHz 8086)
FAh 4Eh *** ??? Olivetti M111
F9h 00h 00h 09/13/85 PC Convertible
F8h 00h 00h 03/30/87 ** PS/2 Model 80 (16MHz 386)
F8h 01h 00h 10/07/87 PS/2 Model 80 (20MHz 386)
F8h 04h 02h 04/11/88 PS/2 Model 70 20MHz, type 2 system brd
F8h 04h 03h 03/17/89 PS/2 Model 70 20MHz, type 2 system brd
F8h 09h 00h ??? PS/2 Model 70 16MHz, type 1 system brd
F8h 09h 02h 04/11/88 PS/2 Model 70 some models
F8h 09h 03h 03/17/89 PS/2 Model 70 some models
F8h 0Bh 00h 01/18/89 PS/2 Model P70 (8573-121) typ 2 sys brd
F8h 0Bh 02h 12/16/89 PS/2 Model P70 ??
F8h 0Ch 00h 11/02/88 PS/2 Model 55SX (16 MHz 386SX)
F8h 0Dh 00h ??? PS/2 Model 70 25MHz, type 3 system brd
F8h 11h 00h 10/01/90 PS/2 Model 90 (25 MHz 486)
F8h 13h 00h 10/01/90 PS/2 Model 90 (33 MHz 486)
F8h 14h 00h 10/01/90 PS/2 Model 90-AK9 (25 MHz 486)
F8h 16h 00h 10/01/90 PS/2 Model 90-AKD (33 MHz 486)
F8h 19h 05h ??? PS/2 Model 35/35LS or 40 (20 MHz 386SX)
F8h 1Bh 00h 10/02/89 PS/2 Model 70-486 (25 MHz 486)
F8h 1Ch 00h 02/08/90 PS/2 Model 65-121 (16 MHz 386SX)
F8h 1Eh 00h 02/08/90 PS/2 Model 55LS (16 MHz 386SX)
F8h 23h 01h ??? PS/2 Model L40 (20 MHz 386SX)
F8h 25h 06h ??? PS/2 Model M57 (20 MHz 386SLC)
F8h 26h 01h ??? PS/2 Model 57 (20 MHz 386SX)
F8h 2Ah 00h ??? PS/2 Model 95 (50 MHz 486)
F8h 2Bh 00h ??? PS/2 Model 90 (50 MHz 486)
F8h 2Ch 01h ??? PS/2 Model 95 (20 MHz 486SX)
F8h 2Dh 00h ??? PS/2 Model 90 (20 MHz 486SX)
F8h 2Eh 01h ??? PS/2 Model 95 (20 MHz 486SX + 487SX)
F8h 2Fh 00h ??? PS/2 Model 90 (20 MHz 486SX + 487SX)
F8h 30h 00h ??? PS/1 Model 2121 (16 MHz 386SX)
F8h 50h 00h ??? PS/2 Model P70 (8573) (16 MHz 386)
F8h 50h 01h 12/16/89 PS/2 Model P70 (8570-031)
F8h 52h 00h ??? PS/2 Model P75 (33 MHz 486)
F8h 61h *** ??? Olivetti P500
F8h 62h *** ??? Olivetti P800
F8h 80h 00h ??? PS/2 Model 80 (25 MHz 386)
F8h 80h 01h 11/21/89 PS/2 Model 80-A21
F8h ??? ??? ??? PS/2 Model 90 (25 MHz 486SX)
F8h ??? ??? ??? PS/2 Model 95 (25 MHz 486SX)
F8h ??? ??? ??? PS/2 Model 90 (25 MHz 486SX + 487SX)
F8h ??? ??? ??? PS/2 Model 95 (25 MHz 486SX + 487SX)
E1h ??? ??? ??? ??? (checked for by DOS4GW.EXE)
9Ah * * ??? Compaq XT/Compaq Plus
30h ??? ??? ??? Sperry PC
2Dh * * ??? Compaq PC/Compaq Deskpro
??? 56h ??? ??? Olivetti, unknown model
??? 74h ??? ??? Olivetti, unknown model
* This BIOS call is not implemented in these early versions.
Read Model byte at F000h:FFFEh and BIOS date at F000h:FFF5h.
** These BIOS versions require the DASDDRVR.SYS patches.
*** These Olivetti and Epson machines store the submodel in the byte at
F000h:FFFDh.
Values for Dell model byte:
02h Dell 200
03h Dell 300
05h Dell 220
06h Dell 310
07h Dell 325
09h Dell 310A
0Ah Dell 316
0Bh Dell 220E
0Ch Dell 210
0Dh Dell 316SX
0Eh Dell 316LT
0Fh Dell 320LX
11h Dell 425E
----------15C1-------------------------------
INT 15 - SYSTEM - RETURN EXTENDED-BIOS DATA-AREA SEGMENT ADDRESS (PS)
AH = C1h
Return: CF set on error
CF clear if successful
ES = segment of data area
SeeAlso: AH=04h"ABIOS"
----------15C200BH00-------------------------
INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - ENABLE/DISABLE
AX = C200h
BH = 00h disable
01h enable
Return: CF set on error
AH = status
00h successful
01h invalid function
02h invalid input
03h interface error
04h need to resend
05h no device handler installed
----------15C201-----------------------------
INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - RESET
AX = C201h
Return: CF set on error
AH = status (see AX=C200h)
CF clear if successful
BH = device ID
SeeAlso: INT 33/AX=0000h
----------15C202-----------------------------
INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - SET SAMPLING RATE
AX = C202h
BH = sampling rate
00h 10/second
01h 20/second
02h 40/second
03h 60/second
04h 80/second
05h 100/second
06h 200/second
Return: CF set on error
AH = status (see AX=C200h)
SeeAlso: INT 33/AX=001Ch
----------15C203-----------------------------
INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - SET RESOLUTION
AX = C203h
BH = resolution
00h one count per mm
01h two counts per mm
02h four counts per mm
03h eight counts per mm
Return: CF set on error
AH = status (see AX=C200h)
----------15C204-----------------------------
INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - GET TYPE
AX = C204h
Return: CF set on error
AH = status (see AX=C200h)
CF clear if successful
BH = device ID
----------15C205-----------------------------
INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - INITIALIZE
AX = C205h
BH = data package size (1 - 8 bytes)
Return: CF set on error
AH = status (see AX=C200h)
SeeAlso: AX=C201h
----------15C206-----------------------------
INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - GET/SET SCALING FACTOR
AX = C206h
BH = subfunction
00h return device status
Return: BL = status
bit 0: right button pressed
bit 1: reserved
bit 2: left button pressed
bit 3: reserved
bit 4: 0 if 1:1 scaling, 1 if 2:1 scaling
bit 5: device enabled
bit 6: 0 if stream mode, 1 if remote mode
bit 7: reserved
CL = resolution (see AX=C203h)
DL = sample rate, reports per second
01h set scaling at 1:1
02h set scaling at 2:1
Return: CF set on error
AH = status (see AX=C200h)
----------15C207-----------------------------
INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - SET DEVICE HANDLER ADDR
AX = C207h
ES:BX -> FAR user device handler
Return: CF set on error
AH = status (see AX=C200h)
SeeAlso: INT 33/AX=000Ch
----------15C3------------------------------
INT 15 - SYSTEM - ENABLE/DISABLE WATCHDOG TIMEOUT (PS50+)
AH = C3h
AL = 00h disable
01h enable
BX = timer counter
Return: CF set on error
CF clear if successful
Note: the watchdog timer generates an NMI
----------15C4-------------------------------
INT 15 - SYSTEM - PROGRAMMABLE OPTION SELECT (PS50+)
AH = C4h
AL = 00h return base POS register address
01h enable slot
BL = slot number
02h enable adapter
Return: CF set on error
DX = base POS register address (if function 00h)
SeeAlso: AH=C6h
----------15C5-------------------------------
INT 15 UC - OS HOOK - ROM BIOS TRACING CALLOUT (PS30/286,PS50Z,PS95)
AH = C5h
AL = interrupt being invoked
01h INT 19
02h INT 14
03h INT 16
04h INT 40 (floppy INT 13)
05h INT 17
06h INT 10
07h INT 12
08h INT 11
09h INT 1A
Return: all registers except AX must be preserved
Notes: called as the very first action of the indicated ROM BIOS interrupt
handlers on the PS/2 Models 30/286, 50Z, and 95
default handler does nothing and returns CF clear for the above
subfunctions, CF set and AH=86h for all other subfunctions
value of AX passed to the original interrupt handler is pushed on
stack immediately prior to call
----------15C6-------------------------------
INT 15 U - later PS/2 models - GET POS DATA
AH = C6h
???
Return: ???
Notes: this function is referenced by name and number in some IBM BIOS manuals
IBM reports that "there are a number of problems with this call" and
does not recommend its use.
SeeAlso: AH=C4h
----------15C7-------------------------------
INT 15 U - PS/2 Model 95 - ???
AH = C7h
???
Return: ???
----------15C8-------------------------------
INT 15 U - PS/2 Model 95 - ???
AH = C8h
???
Return: ???
----------15C9-------------------------------
INT 15 U - newer PS/2; various BIOSes - GET CPU TYPE AND MASK REVISION
AH = C9h
AL = 10h (may be required on some non-PS BIOSes)
Return: AH = 00h
CH = CPU type
03h 80386DX or clone
04h 80486
23h 80386SX or clone
CL = mask revision (stepping level)
Notes: the BIOS must save DX at startup in order to be able to support this
call; PS/2 Models 56, 57, 90, and 95 are known to support it
the PS/2 BIOS merely reads CMOS locations 190h (type) and 191h (rev)
----------15CA-------------------------------
INT 15 U - PS/2 Model 95 - ???
AH = CAh
???
Return: ???
----------15CB-------------------------------
INT 15 U - PS/2 Model 95 - ???
AH = CBh
???
Return: ???
----------15CC-------------------------------
INT 15 U - PS/2 Model 95 - ???
AH = CCh
???
Return: ???
----------15CD-------------------------------
INT 15 U - PS/2 Model 95 - ???
AH = CDh
???
Return: ???
----------15CE-------------------------------
INT 15 U - PS/2 Model 95 - ???
AH = CEh
???
Return: ???
----------15CF-------------------------------
INT 15 U - PS/2 Model 95 - ???
AH = CFh
???
Return: ???
----------15D800-----------------------------
INT 15 - EISA SYSTEM ROM - READ SLOT CONFIGURATION INFORMATION
AX = D800h
CL = slot number (including embedded and virtual)
Return: CF clear if successful
AH = 00h
CF set on error
AH = error code
80h invalid slot number
82h EISA CMOS corrupt
83h empty slot
86h invalid BIOS-FW function call
87h invalid system configuration
AL bit flags
bit 7: set if duplicate IDs
6: set if product ID readable
4,5: slot type (00=expansion, 01=embedded, 10=virtual device)
0-3: duplicate ID number if bit 7 set
BH = major revision level of configuration utility
BL = minor revision level of configuration utility
CX = checksum of configuration file
DH = number of device functions
DL = combined function information byte
SI:DI = 4-byte compressed ID (DI = bytes 0&1, SI = bytes 2&3)
Note: call with AL=80h if using 32-bit CS addressing mode instead of 16-bit
SeeAlso: AX=D801h,AX=D804h
----------15D801-----------------------------
INT 15 - EISA SYSTEM ROM - READ FUNCTION CONFIGURATION INFORMATION
AX = D801h
CH = function number to read
CL = slot number (including embedded and virtual)
DS:SI -> 320-byte buffer for standard configuration data block
Return: CF clear if successful
AH = 00h
DS:SI buffer filled
CF set on error
AH = error code
80h invalid slot number
81h invalid function number
82h EISA CMOS corrupt
83h empty slot
86h invalid BIOS-FW function call
87h invalid system configuration
BX destroyed
Note: call with AL=81h if using 32-bit CS addressing mode instead of 16-bit
----------15D802-----------------------------
INT 15 - EISA SYSTEM ROM - CLEAR NONVOLATILE MEMORY (EISA CMOS)
AX = D802h
BH = EISA config utility major revision level
BL = EISA config utility minor revision level
Return: CF clear if successful
AH = 00h
CF set on error
AH = error code
84h error clearing CMOS
86h invalid BIOS-FW function call
88h config utility version not supported
Note: call with AL=82h if using 32-bit CS addressing mode instead of 16-bit
SeeAlso: AX=D803h
----------15D803-----------------------------
INT 15 - EISA SYSTEM ROM - WRITE NONVOLATILE MEMORY
AX = D803h
CX = length of data structure (0000h = empty slot)
includes two bytes for config file checksum
DS:SI -> configuration data
Return: CF clear if successful
AH = 00h
CF set on error
AH = error code
84h error clearing CMOS
85h EISA CMOS is full
86h invalid BIOS-FW function call
Note: call with AL=83h if using 32-bit CS addressing mode instead of 16-bit
SeeAlso: AX=D802h
----------15D804-----------------------------
INT 15 - EISA SYSTEM ROM - READ PHYSICAL SLOT
AX = D804h
CL = slot number (including embedded and virtual)
Return: CF clear if successful
AH = 00h
CF set on error
AH = error code
80h invalid slot number
83h empty slot
86h invalid BIOS-FW function call
SI:DI = 4-byte compressed ID (DI = bytes 0&1, SI = bytes 2&3)
Note: call with AL=84h if using 32-bit CS addressing mode instead of 16-bit
SeeAlso: AX=D800h
----------15D8-------------------------------
INT 15 - EISA SYSTEM ROM - 32-bit CS ADDRESSING MODE CALLS
AH = D8h
AL = 80h to 84h
other registers as appropriate for AL=00h to 04h
Return: as appropriate for AL=00h to 04h
Note: these functions are identical to AX=D800h to D804h, except that they
should be called when using 32-bit CS addressing mode (pointers use
ESI rather than SI as offset) instead of 16-bit addressing mode
SeeAlso: AX=D800h,AX=D801h,AX=D802h,AX=D803h,AX=D804h
----------15DE00-----------------------------
INT 15 - DESQview - GET PROGRAM NAME
AX = DE00h
Return: AX = offset into DESQVIEW.DVO of program most recently selected from
the "Switch Windows" menu (see below)
Note: always returns AX=0000h under DESQview/X
SeeAlso: AX=DE07h
Format of program entry in DESQVIEW.DVO:
Offset Size Description
00h BYTE length of name (FFh if end of file)
01h N BYTEs name
2 BYTEs keys to invoke program (second = 00h if only one key used)
BYTE program type
00h normal program
04h divider
80h Delete a Program
81h Change a Program
WORD ??? apparently always 0000h
----------15DE01-----------------------------
INT 15 - DESQview - UPDATE "OPEN WINDOW" MENU
AX = DE01h
Return: nothing
Notes: reads DESQVIEW.DVO, disables Open menu if file not in current directory
NOP for DESQview/X
----------15DE02-----------------------------
INT 15 - DESQview 1.x only - SET ??? FLAG FOR CURRENT WINDOW
AX = DE02h
Return: nothing
Note: this call is a NOP in DV 2.x
SeeAlso: AX=DE03h
----------15DE03-----------------------------
INT 15 - DESQview 1.x only - GET ??? FOR CURRENT WINDOW
AX = DE03h
Return: AX = ??? for current window
BX = ??? for current window
Note: this call is a NOP in DV 2.x
SeeAlso: AX=DE02h
----------15DE04-----------------------------
INT 15 - DESQview - GET AVAILABLE COMMON MEMORY
AX = DE04h
Return: BX = bytes of common memory available
CX = largest block available
DX = total common memory in bytes
SeeAlso: AX=DE05h,AX=DE06h
----------15DE05-----------------------------
INT 15 - DESQview - GET AVAILABLE CONVENTIONAL MEMORY
AX = DE05h
Return: BX = K of memory available
CX = largest block available
DX = total conventional memory in K
SeeAlso: AX=DE04h,AX=DE06h
----------15DE06-----------------------------
INT 15 - DESQview - GET AVAILABLE EXPANDED MEMORY
AX = DE06h
Return: BX = K of expanded memory available
CX = largest block available
DX = total expanded memory in K
SeeAlso: AX=DE04h,AX=DE05h
----------15DE07-----------------------------
INT 15 - DESQview - "APPNUM" - GET CURRENT PROGRAM'S NUMBER
AX = DE07h
Return: AX = number of program as it appears on the "Switch Windows" menu
Note: this API call may be made from a hardware interrupt handler
SeeAlso: AX=DE00h
----------15DE08-----------------------------
INT 15 - DESQview - GET ???
AX = DE08h
Return: AX = 0000h if ??? is not set to the current task
0001h if ??? is set to the current task
----------15DE09-----------------------------
INT 15 - DESQview - UNIMPLEMENTED
AX = DE09h
Return: nothing (NOP in DV 1.x and 2.x)
----------15DE0A-----------------------------
INT 15 - DESQview v2.00+ - "DBGPOKE" - DISPLAY CHARACTER ON STATUS LINE
AX = DE0Ah
BL = character
Return: character displayed, next call will display in next position (which
wraps back to the start of the line if off the right edge of screen)
Notes: displays character on bottom line of *physical* screen, regardless
of current size of window (even entirely hidden)
does not know about graphics display modes, just pokes the characters
into display memory
this API call may be made from a hardware interrupt handler
SeeAlso: AX=1003h
----------15DE0B-----------------------------
INT 15 - DESQview v2.00+ - "APILEVEL" - DEFINE MINIMUM API LEVEL REQUIRED
AX = DE0Bh
BL = API level minor version number
BH = API level major version number
Return: AX = maximum API level (AH = major, AL = minor)
Notes: if the requested API level is greater than the version of DESQview, a
"You need a newer version" error window is popped up
the API level defaults to 1.00, and is inherited by child tasks
----------15DE0C-----------------------------
INT 15 - DESQview v2.00+ - "GETMEM" - ALLOCATE "SYSTEM" MEMORY
AX = DE0Ch
BX = number of bytes
Return: ES:DI -> allocated block or 0000h:0000h (DV 2.26+)
Note: use SETERROR (AX=DE15h) to avoid a user prompt if there is insufficient
system memory
SeeAlso: AX=1001h,AX=102Eh,AX=DE0Dh,AX=DE15h,AX=DE19h
----------15DE0D-----------------------------
INT 15 - DESQview v2.00+ - "PUTMEM" - DEALLOCATE "SYSTEM" MEMORY
AX = DE0Dh
ES:DI -> previously allocated block
Return: nothing
SeeAlso: AX=1002h,AX=DE0Ch
----------15DE0E-----------------------------
INT 15 - DESQview v2.00+ - "FINDMAIL" - FIND MAILBOX BY NAME
AX = DE0Eh
ES:DI -> name to find
CX = length of name
Return: BX = 0000h not found
0001h found
DS:SI = object handle
SeeAlso: AH=12h/BH=11h,AH=12h/BX=1200h"GETNAME"
Special mailbox names:
"COM1" ... "COM4" RBcomm using COM1 ... COM4
"DESQview/X Help Engine"
"DESQview/X Network Server" Network Manager
"DESQview X Server0" X-Windows server
"DESQview X Server7" X-Windows printing service
"INBOX" DESQview/X LPD requests
"OUTBOX" DESQview/X LPD responses
"WAITBOX" semaphore to synchronize DESQview/X LPD communications
----------15DE0F-----------------------------
INT 15 - DESQview v2.00+ - ENABLE DESQview EXTENSIONS
AX = DE0Fh
Return: AX and BX destroyed (seems to be bug, weren't saved&restored)
Notes: sends a manager stream with opcodes AEh, BDh, and BFh to task's window
enables an additional mouse mode
----------15DE10-----------------------------
INT 15 - DESQview v2.00+ - "PUSHKEY" - PUT KEY INTO KEYBOARD INPUT STREAM
AX = DE10h
BH = scan code
BL = character
Return: nothing
Notes: a later read will get the keystroke as if it had been typed by the user
multiple pushes are read last-in first-out
if a script exists for the pushed key in the current application, the
script will be executed
early copies of DV 2.00 destroy AX, BX, ES, and DI
SeeAlso: INT 16/AH=05h
----------15DE11BL00-------------------------
INT 15 - DESQview v2.00+ - "JUSTIFY" - EN/DISABLE AUTOM. WINDOW JUSTIFICATION
AX = DE11h
BL = 00h viewport will not move automatically
nonzero viewport will move to keep cursor visible (default)
Return: nothing
----------15DE12BX0000-----------------------
INT 15 - DESQview v2.01+ - "CSTYLE" - SET "C"-COMPATIBLE CONTROL CHAR INTERPRET
AX = DE12h
BX = 0000h select normal style (linefeed only moves down)
nonzero select C style (linefeed moves to start of next line)
Return: nothing
Note: set on a per-task basis, and inherited from the parent task
----------15DE13-----------------------------
INT 15 - DESQview v2.20+ - "GETCRIT" - GET CRITICAL NESTING COUNT
AX = DE13h
Return: BX = number of calls to BEGINC or ENTERC (see INT 15/AX=101Bh,DE1Ch)
without matching ENDC (see INT 15/AX=101Ch)
Note: this API call may be made from within a hardware interrupt handler
SeeAlso: AX=101Bh,AX=101Ch,AX=DE1Bh,AX=DE1Ch
----------15DE14-----------------------------
INT 15 - DESQview v2.20+ - GET OBJECT TYPE
AX = DE14h
ES:DI -> object
Return: BL = 00h not an object
08h window or task
09h mailbox
0Ah keyboard
0Bh timer
0Ch objectq
0Fh pointer
10h panel
SeeAlso: AX=1016h
----------15DE15-----------------------------
INT 15 - DESQview v2.20+ - SET ERROR HANDLING
AX = DE15h
BL = error handling mode
00h post system error on all error conditions
01h return carry flag set on calls to ADDTO, SUBFROM, and WRITE
messages sent to mailboxes which fail due to lack of system
or common memory
02h (v2.26+) same as 01h, but also return null pointer for GETMEM
calls which fail due to lack of system memory
Return: nothing
SeeAlso: AX=DE0Ch,AX=DE16h
----------15DE16-----------------------------
INT 15 - DESQview v2.20+ - GET ERROR HANDLING
AX = DE16h
Return: BL = current mode
00h always post system error
01h return carry flag set on failed mailbox writes
02h return CF set on failed mailbox writes and NULL on failed
GETMEM calls
SeeAlso: AX=DE15h
----------15DE17-----------------------------
INT 15 - DESQview v2.20-2.25 - reserved
AX = DE17h
Return: pops up "Programming error" window
Note: AX = 1117h is NOT identical to this call under DESQview 2.20 thru 2.25
SeeAlso: AX=1117h
----------15DE17-----------------------------
INT 15 - DESQview v2.26+ - "ASSERTMAP" - GET/SET MAPPING CONTEXT
AX = DE17h
BX = function
0000h get current mapping context without setting
nonzero set new mapping context to BX
Return: BX = mapping context in effect before call
Notes: mapping contexts determine conventional-memory addressability; setting
a mapping context ensures that the associated program and data areas
are in memory for access. Usable by drivers, TSRs and shared
programs.
caller need not be running under DESQview
this API call may be made from a hardware interrupt handler
SeeAlso: AX=1117h,AX=DE21h,INT 2F/AX=1685h
----------15DE18-----------------------------
INT 15 - DESQview v2.20+ - internal - ???
AX = DE18h
BP = function number
high byte must be 10h
low byte is function
00h set ???
BL = ??? (00h-10h, video mode???)
BH = value to store
03h set ???
BL = ??? (stored in driver)
0Ah get ???
ES:DI -> 18-byte buffer to hold ???
Note: calls video driver (NOP for Hercules driver,probably CGA and MCGA also)
----------15DE19-----------------------------
INT 15 - DESQview v2.23+ - "GETCOMMON" - ALLOCATE "COMMON" MEMORY
AX = DE19h
BX = number of bytes to allocate
Return: AX = 0000h successful
ES:DI -> allocated block
nonzero insufficient memory
Note: this API call may be made from within a hardware interrupt handler
SeeAlso: AX=DE0Ch,AX=DE15h,AX=DE1Ah
----------15DE1A-----------------------------
INT 15 - DESQview v2.23+ - "PUTCOMMON" - DEALLOCATE "COMMON" MEMORY
AX = DE1Ah
DS:SI -> previously allocated block
Note: this function may be called from within a hardware interrupt handler
SeeAlso: AX=DE0Dh,AX=DE19h
----------15DE1B-----------------------------
INT 15 - DESQview v2.23+ internal - DECREMENT CRITICAL NESTING COUNT
AX = DE1Bh
Return: nothing
SeeAlso: AX=101Ch,AX=DE13h,AX=DE1Ch
----------15DE1C-----------------------------
INT 15 - DESQview v2.23+ - "ENTERC" - INCREMENT CRITICAL NESTING COUNT
AX = DE1Ch
Return: nothing
Notes: similar to AX=101Bh, but begins the critical region without ensuring
that DOS is free
the official documentation states that this call should be paired with
"ENDC" (AX=101Ch); no mention is made of AX=DE1Bh
this API call may be made from within a hardware interrupt handler
SeeAlso: AX=101Bh,AX=101Ch,AX=DE13h,AX=DE1Bh
----------15DE1D-----------------------------
INT 15 - DESQview v2.23+ - "PUTKEY" - FAKE USER KEYSTROKES
AX = DE1Dh
DX = segment of handle for task to receive keystroke
BL = character
BH = scan code
Return: AX = 0000h if successful
nonzero if receiver's keyboard buffer was full
Notes: the key is treated as though the user had pressed it, ignoring any
script which may be bound to the key, and using the current field
table if the keyboard object is in field processing mode
multiple PUTKEYs are seen in the order in which they are executed
SeeAlso: AX=DE10h
----------15DE1E-----------------------------
INT 15 - DESQview v2.23+ - "SCRNINFO" - GET TRUE VIDEO PARAMETERS
AX = DE1Eh
Return: CL = actual number of rows on screen
CH = actual number of columns on screen
BL = actual video mode (may differ from INT 10/AH=0Fh return) (v2.26+)
Note: this API call may be made from a hardware interrupt handler
SeeAlso: INT 10/AH=0Fh
----------15DE1F-----------------------------
INT 15 - DESQview v2.23+ - "DOSUSER" - GET HANDLE OF TASK CURRENTLY USING DOS
AX = DE1Fh
Return: BX = segment of task handle or 0000h if no tasks are using DOS
Note: this API call may be made from within a hardware interrupt handler
SeeAlso: AX=DE13h,INT 21/AH=34h
----------15DE20-----------------------------
INT 15 - DESQview v2.26+ - "DISPATCHINT" - INTERRUPT ANOTHER TASK
AX = DE20h
BX = segment of handle of task to interupt
DX:CX -> FAR interrupt routine
BP,SI,DI,DS,ES as required by interrupt routine
Return: nothing
Notes: unlike "PGMINT" (AX=1021h), DISPATCHINT may be applied to the task
making the DISPATCHINT call
multiple "DISPATCHINT" calls are processed in the order in which they
were executed
the FAR routine is entered with the current ES, DS, SI, DI, and BP
values, using the task's internal stack (see AX=101Ah); only SS:SP
needs to be preserved
this API call may be made from within a hardware interrupt handler
SeeAlso: AX=1021h,AX=DE2Ah
----------15DE21-----------------------------
INT 15 - DESQview v2.26+ - "ASSERTVIR" - CONTROL 386 SCREEN VIRTUALIZATION
AX = DE21h
BX = new state
0000h turn off
nonzero turn on
Return: BX = old state of virtualization
Notes: this API call may be made from within a hardware interrupt handler
under DV 2.40 and 2.42, this call appears to have no effect and always
returns a nonzero value in BX which appears to be the offset within
the DV common memory segment of the caller's task object; it may
only have an effect within a hardware interrupt handler
SeeAlso: AX=1117h,AX=DE17h
----------15DE22-----------------------------
INT 15 - DESQview v2.26+ - "PROCESSMEM" - GET TASK MEMORY STATUS
AX = DE22h
DX = segment of task handle
Return: DX = total amount of memory in paragraphs
BX = amount of system memory in paragraphs
CX = largest block of system memory available in paragraphs
AX = flags
bit 0: system memory resides in shared memory
1: process's memory is swapped out
2: process's system memory is swapped out
Notes: if the task handle is a child task, the returned values will be for the
process containing the task, rather than the task itself
if the process's system memory is swapped out, BX,CX,DX remain
unchanged, because the memory usage cannot be determined
SeeAlso: AX=DE04h,AX=DE05h,AX=DE06h
----------15DE23-----------------------------
INT 15 U - DESQview v2.31+ - ???
AX = DE23h
BX = ??? IRQ number on first PIC?
CX = ??? IRQ number on second PIC?
Return: ???
Note: called by QEMM 6.00+
----------15DE24-----------------------------
INT 15 - DESQview v2.40+ - "XNEWPROC" - START NEW APPLICATION
AX = DE24h
BX = length of .DVP data
CX = length of ??? string
DS:SI -> ??? string
ES:DI -> .DVP data (see AX=102Ch)
Return: BX = segment of task handle??? or 0000h on error
Note: this call is similar to AX=102Ch except that it can interpret the
extended DVP data
SeeAlso: AX=102Ch
----------15DE25-----------------------------
INT 15 - DESQview v2.40+ - "GETDVPATH" - GET DESQview DIRECTORY
AX = DE25h
ES:DI -> 67-byte buffer for ASCIZ directory name
Return: ES:DI buffer filled with directory from which DESQview was started
BUG: DV 2.42 does not place a terminating NUL at the end of the directory
name, so if the buffer is not cleared to zeros before the call,
there is no way to tell where the directory name ends. This bug
has been fixed in DV 2.52 (DV/X 1.02)
SeeAlso: AX=DE2Eh,INT 21/AH=47h
----------15DE26-----------------------------
INT 15 - DESQview v2.40+ - "GETFOREGROUND" - GET KEYBOARD FOCUS
AX = DE26h
Return: BX = segment of handle for task with keyboard focus
Note: under DESQview/X, the X server always has the keyboard focus unless a
"direct" window is active
SeeAlso: AX=DE2Fh,INT 2F/AX=DE0Ah
----------15DE27-----------------------------
INT 15 - DESQview v2.50+ - "ADDINSTANCEDATA" - ADD PER-TASK SAVE/RESTORE AREA
AX = DE27h
BX = type
0000h process
0001h task
ES:DI -> list of Instance Item Structures (see below)
Return: CF clear if successful
AX = ???
BX = ???
CF set on error
AX = ???
Note: DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
SeeAlso: INT 2F/AX=DE08h,INT 2F/AX=DE09h
Format of Instance Item Structure [one element of list]:
Offset Size Description
00h WORD length of data area DESQview should save and restore on context
switches (0000h = end of list)
02h DWORD pointer to area to be saved/restored
----------15DE28-----------------------------
INT 15 U - DESQview v2.50+ - ???
AX = DE28h
BX = segment of ??? or 0000h for default
???
Return: ???
Note: DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
SeeAlso: AX=DE2Ah
----------15DE29BX0000-----------------------
INT 15 U - DESQview v2.50+ - ???
AX = DE29h
BX = 0000h
???
Return: CF clear if successful
???
CF set on error
Note: DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
----------15DE29BX0001-----------------------
INT 15 U - DESQview v2.50+ - ???
AX = DE29h
BX = 0001h
DX = segment of window handle
Return: CF clear if successful
AX = ???
DX = ???
CF set on error
Note: DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
----------15DE29BX0002-----------------------
INT 15 U - DESQview v2.50+ - ???
AX = DE29h
BX = 0002h
DX = segment of window handle
Return: CF clear if successful
AX = ???
DX = ???
CF set on error
Note: DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
----------15DE29BX0003-----------------------
INT 15 U - DESQview v2.50+ - ???
AX = DE29h
BX = 0003h
DX = segment of window handle
Return: CF clear if successful
???
CF set on error
Note: DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
----------15DE29BX0004-----------------------
INT 15 U - DESQview v2.50+ - GET DISPLAY NAME
AX = DE29h
BX = 0004h
CX = size of buffer in bytes
DX = segment of window handle
ES:DI -> buffer for display name
Return: CF clear if successful
buffer filled with ASCIZ display name (truncated if necessary) or
null string if no display
CF set on error
Notes: DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
the name ":0" refers to the local display
----------15DE29BX0005-----------------------
INT 15 U - DESQview v2.50+ - ???
AX = DE29h
BX = 0005h
???
Return: CF clear if successful
???
CF set on error
Note: DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
----------15DE2A-----------------------------
INT 15 - DESQview v2.50+ - "DISPATCHINTAFTERDOS" - INTERRUPT ANOTHER TASK
AX = DE2Ah
BX = segment of handle for task to interrupt or 0000h for caller
DX:CX -> interrupt routine
BP,SI,DI,DS,ES as required by interrupt routine
Return: nothing
Notes: DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
this call is the same as AX=DE20h except that it will delay
interrupting the specified task until after it has exited DOS
SeeAlso: AX=1021h,AX=DE20h
----------15DE2B-----------------------------
INT 15 - DESQview v2.50+ - "OBJNEXT" - TRAVERSE OBJECT LIST
AX = DE2Bh
ES:DI -> starting object
0000h:0000h for first object in list???
Return: AX = status
0000h successful
ES:DI -> next object of same type (window/non-window)
0001h failed (ES:DI was not a valid handle)
Notes: DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
there are two separate lists, one for window/task objects and one
for all other objects
SeeAlso: AX=1016h,AX=DE2Ah,AX=DE2Ch
----------15DE2CDX0100-----------------------
INT 15 - DESQview v2.50+ - "WININFO" - GET WINDOW INFORMATION
AX = DE2Ch
DX = window information format version (0100h for DESQview 2.5x)
BX = segment of window handle or 0000h for default
ES:DI -> buffer for window information (see below)
Return: AX = status
0000h successful
Note: DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
SeeAlso: AX=1000h,AX=1016h,AX=DE01h,AX=DE2Bh
Format of window information:
Offset Size Description
00h BYTE task flag: 00h window, 01h task
01h BYTE process number if owner task
00h if non-owner task
02h WORD segment of owner's handle, 0000h if orphaned
04h WORD mapping context
06h BYTE task status (see below)
07h BYTE unused
08h WORD status bits
bit 0: DESQview process
bit 1: process swapped out
bit 2: process is resized direct window (suspended)
bit 3: process suspended itself
bit 4: user suspended process
bit 5: process is being created
bit 6: task is freeing another task
0Ah BYTE 01h if foreground-only window
Values for task status:
00h "Waiting" waiting for input
01h "Idle" keyboard poll limit reached
03h same as 01h
04h "Pausing" INT 15/AX=1000h pause called
04h DV/X direct: user did something to allow task switch
05h "ModeChg" video mode about to be changed
06h "ModeNtf" notify that video mode changed
07h "MoniCh" requested change to other monitor
08h "StartPgm" control relinquished to start new process
09h "MgrCan" made window manager CANCEL command
0Ah "Slicing" time slice expired
0Bh "Exit DOS" notify on DOS calls
0Ch "Enter DOS" process is re-entering DOS
0Dh "Terminate" INT 21/AH=4Ch or task freed
0Eh "BrkNxt" Control-Break pressed
0Fh "MgrCol" keyboard focus taken away
10h "PgmInt" interrupted by API call from another task
11h "BldOpen" call to INT 15/AX=DE01h
----------15DE2D-----------------------------
INT 15 U - DESQview v2.50+ - GET/SET SOCKET HANDLER
AX = DE2Dh
CX = direction
FFFFh set socket handler
DX:BX -> FAR function for socket interface
must be of the format described under INT 63"DESQview"
other get socket handler
Return: DX:BX -> socket handler
Notes: DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
the "set" subfunction is normally called only by SOCKET.DVR
SeeAlso: AX=DE2Eh,INT 63"DESQview"
----------15DE2E-----------------------------
INT 15 U - DESQview v2.50+ - SOCKET API
AX = DE2Eh
DX:BX -> socket record or 0000h:0000h to create a new socket record
Return: CX = size of socket record in bytes
DX:BX -> socket record which was used
Notes: DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
socket records are allocated from common memory
for Unix compatibility, each socket and connection on a socket is
allocated a DOS file handle (referencing an SFT for NUL) which is
used on various calls to specify which of possibly multiple
connections is to be operated upon
SeeAlso: AX=DE2Dh,INT 63"DESQview"
Format of socket record:
Offset Size Description
00h WORD signature F0ADh
02h WORD function number
0000h initialize socket???
0001h "gethostname"
0002h "ioctl" check for input
0003h "sleep" delay for specified period
0004h "htons" convert word to network (big-endian) byte order
0005h "select"
0006h "bsd_close"/"so_close" close socket
0007h NOP
0008h "connect" initiate connection on socket
0009h "recv"/"recvfrom" read from socket
000Ah "socket"
000Bh ???
000Ch "gethostbyname"
000Dh "send"/"sendto" write to socket
000Eh ??? (does something to all connections for process)
000Fh "getpid" get process identifier
0010h "gettimeofday"
0011h "bind" assign name to socket
0012h "listen" listen for connections on socket
0013h "accept" accept connection on socket
0014h connect to X server
0015h "gethostbyaddr" get host information for an address
0016h "getprotobyname"
0017h "getprotobynumber"
0018h "getservbyname"
0019h "getservbyport"
001Ah "getsockname" determine name bound to socket
001Bh "getpeername" get name of connected peer
001Ch "getsockopt"/"setsockopt"
001Dh "so_exit" close all sockets for calling process
001Eh "issock" determine whether file handle references socket
001Fh "so_attach" reattach previously detached socket
0020h "so_detach" temporarily detach socket
0021h get DESQview directory
0022h "NewProc" start new application (see AX=102Ch)
0023h "so_linkup"
0024h canonicalize filename
0025h indirect INT 15h call
0026h Network Manager interface
0027h "so_unlink" close connection from "so_linkup"
0028h "raisepriority"
0029h "lowerpriority"
002Ah ???
FFFFh "NetExit" (appears to be a NOP)
04h WORD returned error code (see below)
06h WORD maximum message size??? (usually 0400h)
08h WORD PSP segment to use or 0000h if socket not valid
0Ah WORD scratch space (JFT size)
0Ch DWORD scratch space (JFT address)
10h DWORD mailbox handle (initialized by function 0000h)
14h DWORD timer object handle (initialized by function 0000h)
---function 0000h---
18h WORD (return) ???
---function 0001h---
18h WORD (return) status???
1Ah 128 BYTEs (return) ASCIZ hostname (empty string if not on network)
9Ah WORD maximum length of hostname to return
---function 0002h---
18h WORD (return) status
1Ah WORD socket's file handle
1Ch WORD IOCTL function
05h "FIONREAD" determine available input
06h "FIONBIO" set blocking state of socket
1Eh WORD (return, subfn 05h) number of bytes available for reading
(call, subfn 06h) 0000h blocking, nonzero nonblocking
---function 0003h---
18h 2 BYTEs unused
1Ah WORD delay time in seconds
---function 0004h---
18h WORD (return) result in network (big-endian) byte order
1Ah WORD value to convert to network byte order
---function 0005h---
18h WORD (return) number of handles meeting the specified conditions???
1Ah WORD number of file handles in each bitset???
1Ch DWORD bitset of socket handles to check for readability???
20h DWORD bitset of socket handles to check for writability???
24h DWORD bitset of socket handles to check for errors???
28h WORD timeout in ??? or 0000h to block until some socket ready
2Ah DWORD ???
2Eh DWORD ???
---function 0006h---
18h WORD (return) status: 0000h if successful, FFFFh on error
1Ah WORD socket's file handle
---function 0008h---
18h WORD (return) status: 0000h if successful, FFFFh on error
1Ah WORD socket's file handle
1Ch WORD 0001h if socket name specified, 0000h if not
1Eh WORD length of socket name
20h N BYTEs name of socket to which to connect
---function 0009h---
18h WORD (return) number of bytes actually read, 0000h if connection
closed, or FFFFh on error
1Ah WORD socket's file handle
1Ch WORD number of bytes to read
1Eh WORD flags
20h WORD 0000h if no source address desired
0001h if source address is to be stored (datagram sockets)
22h WORD length of source address
24h 110 BYTEs source address
92h 1K BYTEs buffer for data to be read
---function 000Ah---
18h WORD (return) socket's file handle or FFFFh on error
1Ah WORD address family (0001h,0002h)
1Ch WORD socket type
1Eh WORD protocol
---function 000Bh---
18h WORD (return) 0001h if ??? or FFFFh on error
1Ah WORD socket's file handle
1Eh WORD (call) ???
---function 000Ch---
18h 128 BYTEs buffer containing ASCIZ hostname
special case if empty string or "unix"
98h ??? 'struct hostent' ???
A2h ??? (return) ???
---function 000Dh---
18h WORD (return) number of bytes actually written or FFFFh on error
1Ah WORD socket's file handle
1Ch WORD number of bytes to write
1Eh WORD number of bytes to follow in subsequent writes???
20h WORD flags
22h WORD 0000h if no destination specified, 0001h if destination present
24h WORD ???
26h WORD length of destination address
28h 110 BYTEs destination address
96h 1K BYTEs buffer containing data to be written
---function 000Eh---
no additional fields
---function 000Fh---
18h DWORD (return) DESQview task handle of calling process
---function 0010h---
18h DWORD (return) current time
1Ch DWORD (return) ???
---function 0011h---
18h WORD (return) status: 0000h if successful, FFFFh on error
1Ah WORD socket's file handle
1Ch WORD length of name
1Eh N BYTEs buffer for socket name
---function 0012h---
18h WORD (return) status: 0000h if successful, FFFFh on error
1Ah WORD socket's file handle
1Ch WORD maximum backlog of pending connections allowed on socket
---function 0013h---
18h WORD (return) file handle for new connection or FFFFh on error
1Ah WORD listen()ing socket's file handle
1Ch WORD (call) length of buffer for connecting entity's address
(return) actual length of address
1Eh N BYTEs buffer for connecting entity's address
---function 0014h---
18h WORD (return) socket's file handle or FFFFh on error
1Ah 4 BYTEs (return) ???
1Eh WORD (return) ???
20h WORD (return) ???
22h 256 BYTEs ASCIZ X display name
122h ???
---function 0015h---
18h WORD (call) type of address??? (test for 0001h seen)
1Ah WORD (call) length of buffer for host address
1Ch 110 BYTEs buffer containing host address
8Ah WORD (return) offset of official host name???
8Ch WORD (return) offset of alias list???
8Eh WORD (return) address type???
90h WORD (return) length of an address in bytes???
92h WORD (return) offset of address???
9Ah N BYTEs (return) ??? buffer for hostname, alias list, and host address
---function 0016h---
18h ??? buffer for protocol name???
98h ???
---function 0017h---
18h WORD (call) protocol number???
1Ah WORD (return) ??? or 0001h
---function 0018h---
18h 128 BYTEs buffer containing ???
98h 128 BYTEs buffer containing ???
118h WORD (return) ???
---function 0019h---
18h WORD length of name???
1Ah 128 BYTEs buffer for name???
9Ah WORD (return) ???
---function 001Ah---
18h WORD (return) 0000h if successful, FFFFh on error
1Ah WORD socket's file handle
1Ch WORD (call) length of buffer for socket name
(return) actual length of socket name
1Eh N BYTEs buffer for socket name
---function 001Bh---
18h WORD (return) status: 0000h if successful, FFFFh on error
1Ah WORD socket's file handle
1Ch WORD (call) size of buffer for name
(return) actual size of name
1Eh N BYTEs buffer for peer's name
---function 001Ch---
18h WORD (return) status: 0000h if successful, FFFFh on error
1Ah WORD direction: 0000h to get, 0001h to set
1Ch WORD socket's file handle
1Eh WORD option level
20h WORD option name
22h WORD (call) length of buffer for option value
(return) actual length of option value
24h N BYTEs buffer for option value
---function 001Dh---
no additional fields
---function 001Eh---
18h WORD (return) status: 0000h ??? or 0001h ???
1Ah WORD file handle which may or may not be a socket
---function 001Fh---
18h WORD (return) file handle or FFFFh on error
1Ah DWORD (call) pointer to Socket Context Record (see below) of a
previously detached socket
---function 0020h---
18h WORD (return) status: 0000h if successful or FFFFh on error
1Ah WORD socket's file handle
1Ch DWORD (return) pointer to Socket Context Record (see below) for
the file handle
---function 0021h---
18h 64 BYTEs buffer for DESQview startup directory (see AX=DE25h)
---function 0022h---
18h DWORD (return) task handle of new application
1Ch WORD size of .DVP data
1Eh 129 BYTEs ASCIZ ???
9Fh N BYTEs .DVP data (see AX=102Ch)
---function 0023h---
18h WORD (return) ??? or FFFFh on error
1Ah WORD socket's file handle???
---function 0024h---
18h WORD (return) DOS error code (see INT 21/AH=59h)
0000h if successful
1Ah 129 BYTEs ASCIZ filename/pathname
11Bh 129 BYTEs ASCIZ canonicalized filename/pathname (see INT 21/AH=60h)
---function 0025h---
18h WORD value of AX
1Ah WORD value of BX
1Ch WORD (call) value of CX for call if AH value other than 12h
(call) number of stack parameters if AH value is 12h
(return) returned CX for calls other than INT 15/AH=12h
1Eh WORD value of DX
20h WORD value of DI
22h WORD value of SI
24h WORD value of DS
26h WORD value of ES
28h WORD (return) value of FLAGS after call
2Ah N DWORDs (call) stack parameters for INT 15/AH=12h call
(return) stack results from INT 15/AH=12h call
---function 0026h---
18h WORD (call) subfunction
0004h "so_exit"???
0005h "gethostbyname"
0006h "gethostname"
0009h "socket"
000Dh "gethostbyaddr"
000Fh "getprotobyname"
0010h get protocol name for protocol number
0011h "getservbyname"
0012h "getservbyport"
0013h "getsockname"???
0016h ???
0017h kill Network Manager
0018h "getpeername"???
0019h ??? (called by socket function 0000h)
001Ah ???
001Bh "so_linkup"
001Dh get network services
001Fh "getpwuid"
0020h "getpwnam"
0021h "getpwvar"
0022h "crypt"
0023h "so_unlink"
0024h "getlogin"
0028h "sethostent"
0029h "gethostent"
002Ah "soaddhost"
002Bh "soupdatehost"
002Ch "sodeletehost"
002Dh "setservent"
002Eh "getservent"
002Fh "setpwent"
0030h "getpwent"
0031h ???
0032h ???
0033h ???
0034h get IP network number
0035h ??? (pops up Network Manager window)
0037h ???
0038h get machine name and IP address
0039h ???
(return) status???
1Ah WORD (call) size of parameter data
(return) size of returned data
1Ch N BYTEs (call) parameter data required by call (see below)
(return) result data (see below)
---function 0027h---
18h WORD (return) status: 0000h if successful, FFFFh on error
1Ah WORD socket's file handle
---functions 0028h,0029h---
18h WORD (call) file handle for which to set priority low/high
FFFFh to change calling task's priority
---function 002Ah---
no additional fields
Format of Function 0026h/Subfunction 000Fh data:
Offset Size Description
00h 8 BYTEs (return) ???
Format of Function 0026h/Subfunction 0010h data:
Offset Size Description
00h 2 BYTEs (return) ???
02h WORD (return) protocol number
04h WORD (call) protocol number for which to get name
06h WORD (return) ???
08h var (return) ASCIZ protocol name
N var (return) ASCIZ protocol name
Format of Function 0026h/Subfunction 0011h data:
Offset Size Description
00h 8 BYTEs ???
08h var (return) ASCIZ protocol name
var (return) ASCIZ ??? name
var (return) ASCIZ ??? name
Format of Function 0026h/Subfunction 0012h data:
Offset Size Description
00h 8 BYTEs (return) ???
Format of Function 0026h/Subfunction 0013h data:
Offset Size Description
00h 116 BYTEs (return) ???
Format of Function 0026h/Subfunction 0016h data:
Offset Size Description
00h 4 BYTEs (return) ???
Format of Function 0026h/Subfunction 0018h data:
Offset Size Description
00h 116 BYTEs (return) ???
Format of Function 0026h/Subfunction 0019h data:
Offset Size Description
00h 4 BYTEs (return) ???
04h DWORD (return) task handle of ???
Format of Function 0026h/Subfunction 001Ah data:
Offset Size Description
00h 38 BYTEs (return) ???
Format of Function 0026h/Subfunction 001Bh data:
Offset Size Description
00h 10 BYTEs (return) ???
Format of Function 0026h/Subfunction 001Dh return data [array]:
Offset Size Description
00h WORD ??? or FFFFh if end of array
02h 7 BYTEs ???
09h 27 BYTEs ASCIZ name of service
Format of Function 0026h/Subfunction 0024h return data:
Offset Size Description
00h var ASCIZ username
Format of Function 0026h/Subfunction 0030h data:
Offset Size Description
00h WORD (call) UID or 0000h for current user
(return) ???
02h WORD (return) UID
04h 6 BYTEs (return) ???
0Ah var (return) ASCIZ username
var (return) ASCIZ encrypted password
var (return) ASCIZ initial ("home") directory
Format of Function 0026h/Subfunction 0034h data:
Offset Size Description
00h 1-3 BYTEs IP network number of caller's machine (low byte first)
Format of Function 0026h/Subfunction 0038h return data:
Offset Size Description
00h BYTE ???
01h 4 BYTEs IP address
05h var ASCIZ machine name
???
Values for error code:
0000h successful
0009h "BADF" bad file handle
000Ch "ENOMEM" out of memory
000Eh "EFAULT" bad address
0016h "EINVAL" invalid argument
0018h "EMFILE" too many open files
0020h "EPIPE" ??? broken pipe
0023h "EWOULDBLOCK" operation cannot be completed at this time
0024h "EINPROGRESS" operation now in progress
0026h "ENOTSOCK" socket invalid
0028h "EMSGSIZE" message too long to send atomically
002Ch "ESOCKTNOSUPPORT" socket type not supported
002Fh "EAFNOSUPPORT" address family not supp. by protocol fam.
0031h "EDOM" argument too large
0038h "EISCONN" socket is already connected
0039h "ENOTCONN" socket is not connected
Format of Socket Context Record:
Offset Size Description
00h DWORD pointer to next Socket Context Record, 0000h:0000h if last
04h WORD SFT index for socket, 00FFh if not connected, FFFFh if detached
06h WORD PSP segment of owner or 0000h
08h WORD mapping context of owning window
0Ah 2 BYTEs ???
0Ch WORD address family
0Eh WORD socket type
10h WORD protocol
12h WORD socket state
0001h created
0002h bound
0003h listening???
0005h connected
14h DWORD timer object handle
18h DWORD object handle (mailbox???)
1Ch DWORD object handle of parent of above object or 0000h:0000h
20h DWORD pointer to ??? or 0000h
24h 6 BYTEs ???
2Ah WORD file handle for socket or FFFFh
2Ch 2 BYTEs ???
2Eh WORD nonzero if socket nonblocking
---network connections only---
30h 2 BYTEs ???
32h WORD ???
34h 4 BYTEs IP address of remote (big-endian)
38h 6 BYTEs ???
----------15DE2F-----------------------------
INT 15 - DESQview v2.50+ - "VIDEONOTIFY" - HAS DIRECT WINDOW BEEN ACTIVE?
AX = DE2Fh
Return: BX = status
0001h keyboard focus has been given to a direct window since the
last call
0000h if not
Notes: DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
Quarterdeck states that this call will not be available under future
versions of DESQview Classic
----------15DE30-----------------------------
INT 15 - DESQview v2.50+ - "GETDVXVERSION" - GET DESQview/X VERSION
AX = DE30h
Return: BX = version (BH=major, BL=minor) or 0000h if not DESQview/X
Notes: DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
you must first check the DESQview version to verify that it is 2.50 or
greater
SeeAlso: INT 21/AH=2Bh/CX=4445h
----------15E00F-----------------------------
INT 15 - Compaq Systempro - MULTIPROCESSOR DISPATCH
AX = E00Fh
ES:BX -> start of 2nd processor's execution
Return: AL = 0Fh successful
= 00h failure
SeeAlso: AX=E10Eh,AX=E200h
----------15E10E-----------------------------
INT 15 - Compaq Systempro - MULTIPROCESSOR END-OF-DISPATCH
AX = E10Eh
ES:BX -> start of 2nd processor's execution
Return: AL = 0Fh successful (halted)
= 00h failure (not halted)
SeeAlso: AX=E00Fh,AX=E200h
----------15E200-----------------------------
INT 15 - Compaq Systempro - MULTIPROCESSOR AVAILABLE
AX = E200h
Return: AX = 8000h if 2nd processor available
SeeAlso: AX=E00Fh,AX=E10Eh
----------15E4-------------------------------
INT 15 - ???
AH = E4h
AL = subfunction
21h, 89h, 8Ah, 8Bh called by 386MAX v6.01
DL = ???
Return: ???
----------15F200CX454D-----------------------
INT 15 - Tandon memory mapper - Tandon MAPPER HARDWARE INITIALISATION CHECK ???
AX = F200h
CX = 454Dh
Return: CF clear if hardware already initialised
BX = upper RAM areas in use
bit 0: C000-C3FF
bit 1: C400-C7FF
...
bit 11: EC00-EFFF
CF set if hardware not initialised yet
----------1600-------------------------------
INT 16 - KEYBOARD - GET KEYSTROKE
AH = 00h
Return: AH = BIOS scan code
AL = ASCII character
Notes: on extended keyboards, this function discards any extended keystrokes,
returning only when a non-extended keystroke is available
the BIOS scan code is usually, but not always, the same as the hardware
scan code processed by INT 09. It is the same for ASCII keystrokes
and most unshifted special keys (F-keys, arrow keys, etc.), but
differs for shifted special keys.
SeeAlso: AH=01h,AH=05h,AH=10h,AH=20h,INT 18/AH=00h
----------1601-------------------------------
INT 16 - KEYBOARD - CHECK FOR KEYSTROKE
AH = 01h
Return: ZF set if no keystroke available
ZF clear if keystroke available
AH = BIOS scan code
AL = ASCII character
Note: if a keystroke is present, it is not removed from the keyboard buffer;
however, any extended keystrokes which are not compatible with 83/84-
key keyboards are removed in the process of checking whether a
non-extended keystroke is available
SeeAlso: AH=00h,AH=11h,AH=21h,INT 18/AH=01h
----------1602-------------------------------
INT 16 - KEYBOARD - GET SHIFT FLAGS
AH = 02h
Return: AL = shift flags
bit 7: Insert active
6: CapsLock active
5: NumLock active
4: ScrollLock active
3: Alt key pressed (either Alt on 101/102-key keyboards)
2: Ctrl key pressed (either Ctrl on 101/102-key keyboards)
1: left shift key pressed
0: right shift key pressed
SeeAlso: AH=12h,AH=22h,INT 18/AH=02h
----------1603-------------------------------
INT 16 - KEYBOARD - SET TYPEMATIC RATE AND DELAY
AH = 03h
AL = subfunction
00h set default delay and rate (PCjr and some PS/2)
01h increase delay before repeat (PCjr)
02h decrease repeat rate by factor of 2 (PCjr)
03h increase delay and decrease repeat rate (PCjr)
04h turn off typematic repeat (PCjr and some PS/2)
05h set repeat rate and delay (AT,PS)
BH = delay value (00h = 250ms to 03h = 1000ms)
BL = repeat rate (00h=30/sec to 0Ch=10/sec [def] to 1Fh=2/sec)
06h get current typematic rate and delay (newer PS/2s)
Return: BL = repeat rate (see above)
BH = delay (see above)
Note: use INT 16/AH=09h to determine whether some of the subfunctions are
supported
SeeAlso: INT 16/AH=09h
----------1604-------------------------------
INT 16 - KEYBOARD - SET KEYCLICK (PCjr only)
AH = 04h
AL = keyclick state
00h off
01h on
SeeAlso: AH=03h
----------1605-------------------------------
INT 16 - KEYBOARD - STORE KEYSTROKE IN KEYBOARD BUFFER (AT/PS w enh keybd only)
AH = 05h
CH = scan code
CL = ASCII character
Return: AL = 00h if successful
01h if keyboard buffer full
Note: under DESQview, the following "keystrokes" invoke the following
actions when they are read from the keyboard buffer:
38FBh or FB00h switch to next window (only if main menu
popped up)
38FCh or FC00h pop up DESQview main menu
38FEh or FE00h close the current window
38FFh or FF00h pop up DESQview learn menu
SeeAlso: AH=00h,AH=71h,AH=FFh,INT 15/AX=DE10h
----------1605-------------------------------
INT 16 - KEYBOARD - SELECT KEYBOARD LAYOUT (PCjr only)
AH = 05h
AL = function
01h set keyboard layout to French
02h set keyboard layout to German
03h set keyboard layout to Italian
04h set keyboard layout to Spanish
05h set keyboard layout to UK
80h check if function supported
Return: AL <> 80h if supported
Return: ???
Note: called by DOS 3.2 KEYBxx.COM
SeeAlso: AH=92h,AH=A2h
----------1609-------------------------------
INT 16 - KEYBOARD - GET KEYBOARD FUNCTIONALITY
AH = 09h
Return: AL = keyboard functions supported
bit 7: reserved
bit 6:
bit 5:
bit 4: INT 16/AH=0Ah supported
bit 3: INT 16/AX=0306h supported
bit 2: INT 16/AX=0305h supported
bit 1: INT 16/AX=0304h supported
bit 0: INT 16/AX=0300h supported
Note: this function is only available if bit 6 of the second feature byte
returned by INT 15/AH=C0h is set
SeeAlso: AH=03h,AH=0Ah,INT 15/AH=C0h
----------160A-------------------------------
INT 16 - KEYBOARD - GET KEYBOARD ID
AH = 0Ah
Return: BX = keyboard ID
Note: check return value from AH=09h to determine whether this function is
supported
SeeAlso: AH=09h
----------1610-------------------------------
INT 16 - KEYBOARD - GET ENHANCED KEYSTROKE (enhanced kbd support only)
AH = 10h
Return: AH = BIOS scan code
AL = ASCII character
Notes: if no keystroke is available, this function waits until one is placed
in the keyboard buffer
the BIOS scan code is usually, but not always, the same as the hardware
scan code processed by INT 09. It is the same for ASCII keystrokes
and most unshifted special keys (F-keys, arrow keys, etc.), but
differs for shifted special keys.
unlike AH=00h, this function does not discard extended keystrokes
SeeAlso: AH=00h,AH=11h,AH=20h
----------1611-------------------------------
INT 16 - KEYBOARD - CHECK FOR ENHANCED KEYSTROKE (enh kbd support only)
AH = 11h
Return: ZF set if no keystroke available
ZF clear if keystroke available
AH = BIOS scan code
AL = ASCII character
Notes: if a keystroke is available, it is not removed from the keyboard buffer
unlike AH=01h, this function does not discard extended keystrokes
SeeAlso: AH=01h,AH=10h,AH=21h
----------1612-------------------------------
INT 16 - KEYBOARD - GET EXTENDED SHIFT STATES (enh kbd support only)
AH = 12h
Return: AL = shift flags 1 (same as returned by AH=02h)
bit 7: Insert active
6: CapsLock active
5: NumLock active
4: ScrollLock active
3: Alt key pressed (either Alt on 101/102-key keyboards)
2: Ctrl key pressed (either Ctrl on 101/102-key keyboards)
1: left shift key pressed
0: right shift key pressed
AH = shift flags 2
bit 7: SysRq key pressed
6: CapsLock pressed
5: NumLock pressed
4: ScrollLock pressed
3: right Alt key pressed
2: right Ctrl key pressed
1: left Alt key pressed
0: left Ctrl key pressed
Notes: AL bit 3 set only for left Alt key on many machines
AH bits 7 through 4 always clear on a Compaq SLT/286
SeeAlso: AH=02h,AH=22h,AH=51h
----------1620-------------------------------
INT 16 - KEYBOARD - GET 122-KEY KEYSTROKE???
AH = 20h
Return: ??? see AH=10h
Note: use AH=09h to determine whether this function is supported
SeeAlso: AH=00h,AH=10h,AH=21h
----------1621-------------------------------
INT 16 - KEYBOARD - CHECK FOR 122-KEY KEYSTROKE???
AH = 21h
Return: ??? see AH=11h
Note: use AH=09h to determine whether this function is supported
SeeAlso: AH=01h,AH=11h,AH=20h
----------1622-------------------------------
INT 16 - KEYBOARD - GET 122-KEY SHIFT STATUS???
AH = 22h
Return: ??? see AH=12h
Note: use AH=09h to determine whether this function is supported
SeeAlso: AH=02h,AH=12h
----------164252-----------------------------
INT 16 - TEXTCAP 2.0 - INSTALLATION CHECK
AX = 4252h
Return: AX = 5242h if installed
Note: TEXTCAP 2.0 is a heavily modified (by Gisbert W. Selke) version of the
PC Magazine utility CAPTURE written by Tom Kihlken
SeeAlso: AX=4253h,AX=4254h
----------164253-----------------------------
INT 16 - TEXTCAP 2.0 - UNINSTALL
AX = 4253h
Return: AX = segment of resident code
Notes: the uninstall code does not check whether interrupt vectors have been
chained by other programs
the caller must free the main memory block (using the returned segment)
SeeAlso: AX=4252h,AX=4254h
----------164254-----------------------------
INT 16 - TEXTCAP 2.0 - DUMP TEXT SCREEN TO FILE
AX = 4254h
Return: AX = status
4254h if screen dump will be written as soon as disk becomes idle
5442h if screen dump written
SeeAlso: AX=4252h,AX=4253h
----------164500-----------------------------
INT 16 - Shamrock Software EMAIL - GET STATUS
AX = 4500h
DL = port number (01h = COM1)
ES:BX -> 13-byte buffer for ASCIZ name
Return: AX = 4D00h if EMAIL installed on specified port
ES:BX -> "" if no connection
-> "*" if connection but caller has not identified name
-> name otherwise
CX = version (CH = major, CL = minor)
DL = privilege level of user (00h = guest)
DH = chosen language (00h German, 01h English)
SeeAlso: AX=4501h,AX=4502h
----------164501-----------------------------
INT 16 - Shamrock Software EMAIL - GET ELAPSED ONLINE TIME AND MAXIMUM TIME
AX = 4501h
DL = port number (01h = COM1)
Return: AX = 4D00h if EMAIL installed on specified port
BX = maximum connect time in clock ticks
CX = maximum connect time for guests (without name) in clock ticks
DX = elapsed connect time of current user in clock ticks
SeeAlso: AX=4500h
----------164502-----------------------------
INT 16 - Shamrock Software EMAIL - GET CURRENT COMMUNICATIONS PARAMETERS
AX = 4502h
DL = port number (01h = COM1)
Return: AX = 4D00h if EMAIL installed on specified port
BL = current value of serial port's Line Control Register
BH = flags
bit 0: ISO code
1: pause
2: linefeed
3: ANSI sequences
CX = selected country code (33 = France, 49 = Germany, etc)
DX = baudrate divisor (115200/DX = baudrate)
SeeAlso: AX=4500h
----------164503-----------------------------
INT 16 - Shamrock Software EMAIL - SPECIFY COMMAND-WORD FOR USER FUNCTION
AX = 4503h
DL = port number (01h = COM1)
DH = maximum execution time in clock ticks (00h = 5 seconds)
ES:BX -> ASCIZ string with new user command-word
Return: AX = 4D00h if EMAIL installed on specified port
Notes: a single user command (consisting of only uppercase letters and digits)
may be defined, and remains valid until it is overwritten or the
EMAIL program terminates; the user command must be activated by
calling AX=4504h at least once.
an existing command word may be redefined with this function
SeeAlso: AX=4504h,AX=4505h
----------164504-----------------------------
INT 16 - Shamrock Software EMAIL - CHECK FOR USER FUNCTION COMMAND-WORD
AX = 4504h
DL = port number (01h = COM1)
ES:BX -> 80-byte buffer for ASCIZ user input line
Return: AX = 4D00h if EMAIL installed on specified port
DL = flags
bit 0: user function supported (always set)
1: user entered user-function command word
if DL bit 1 set,
ES:BX buffer contains line entered by user which begins with
the defined command word and has been converted to all
caps
Note: caller must process the returned commandline and invoke AX=4505h
within five seconds with the result of that processing
SeeAlso: AX=4503h,AX=4505h
----------164505-----------------------------
INT 16 - Shamrock Software EMAIL - SEND RESULT OF USER FUNCTION
AX = 4505h
DL = port number (01h = COM1)
DH = error flag
bit 3: set on error
ES:BX -> ASCIZ text to return to user, max 1024 bytes
Return: AH = 4Dh if EMAIL installed on specified port
AL = status
00h successful
02h unable to perform function (timeout, prev call not complete)
other error
Notes: if the error flag in DH is set, the string is not sent and an error
message is generated instead; if this function is not called within
five seconds of AX=4504h, EMAIL automatically generates an error
message
the string is copied into an internal buffer, allowing this function's
caller to continue immediately
SeeAlso: AX=4503h,AX=4504h,INT 17/AX=2400h
----------164506-----------------------------
INT 16 - Shamrock Software EMAIL - MONITOR XMODEM DOWNLOAD
AX = 4506h
DL = port number (01h = COM1)
ES:BX -> 13-byte buffer for ASCIZ filename
Return: AX = 4D00h if EMAIL installed on specified port
DH = Xmodem status
00h no XGET command given
01h XGET in progress
02h XGET completed successfully
ES:BX buffer filled with last filename given to XGET command
(without path)
Note: DH=02h will only be returned once per XGET; subsequent calls will
return DH=00h
SeeAlso: AX=4500h,INT 17/AX=2408h
----------165000-----------------------------
INT 16 - KEYBOARD - AX PC - SET KEYBOARD COUNTRY CODE
AX = 5000h
BX = country code
0001h USA (English), 0051h Japan
Return: AL = status
00h successful
01h bad country code
02h other error
SeeAlso: AX=5001h,INT 10/AX=5000h,INT 17/AX=5000h
----------165001-----------------------------
INT 16 - KEYBOARD - AX PC - GET KEYBOARD COUNTRY CODE
AX = 5001h
Return: AL = status
00h successful
BX = country code
02h error
SeeAlso: AX=5000h,INT 10/AX=5001h,INT 17/AX=5001h
----------1651-------------------------------
INT 16 - KEYBOARD - AX PC - READ SHIFT KEY STATUS
AH = 51h
Return: AL = standard shift key states (see AH=12h)
AH = Kana lock (00h off, 01h on)
SeeAlso: AH=02h,AH=12h,AH=22h
----------165500-----------------------------
INT 16 - Microsoft Word internal - MICROSOFT WORD COOPERATION WITH TSR
AX = 5500h
Return: AX = 4D53h ('MS') if keyboard TSR present
Notes: during startup, Microsoft Word tries to communicate with any TSRs
that are present through this call.
if the return is not 4D53h, Word installs its own INT 09 and INT 16
handlers; otherwise it assumes that the TSR will handle the keyboard
SeeAlso: INT 1A/AX=3601h
----------1655FF-----------------------------
INT 16 - Swap Utilities - ???
AX = 55FFh
BX >= 0004h
CX = function
0000h set ??? flag
other clear ??? flag
Note: present in SWAPSH and SWAPDT v1.77j, distributed with PC Tools 7
----------166969BX6968-----------------------
INT 16 - PC Tools v5.1+ BACKTALK - UNHOOK
AX = 6969h
BX = 6968h
Return: resident code unhooked, but not removed from memory
----------166969BX6969-----------------------
INT 16 - PC Tools v5.1+ BACKTALK - INSTALLATION CHECK
AX = 6969h
BX = 6969h
DX = 0000h
Return: DX nonzero if installed
BX = CS of resident code
DX = PSP segment of resident code
DS:SI -> ASCIZ identification string "CPoint Talk"
----------166F00BX0000-----------------------
INT 16 - HP Vectra - ??? - INSTALLATION CHECK
AX = 6F00h
BX = 0000h
Return: BX = 4850h if present
Note: called by recent MS Mouse drivers
----------166F0D-----------------------------
INT 16 - HP Vectra - ???
AX = 6F0Dh
???
Return: ???
Note: called by MS Windows HPSYSTEM.DRV and HPEBIOS.386
SeeAlso: AX=6F0Eh
----------166F0E-----------------------------
INT 16 - HP Vectra - ???
AX = 6F0Eh
???
Return: ???
Note: called by MS Windows HPSYSTEM.DRV and HPEBIOS.386
SeeAlso: AX=6F0Dh
----------1670-------------------------------
INT 16 - FAKEY.COM - INSTALLATION CHECK
AH = 70h
Return: AX = 1954h if installed
Note: FAKEY is a keystroke faking utility by System Enhancement Associates
----------1671-------------------------------
INT 16 - FAKEY.COM - PUSH KEYSTROKES
AH = 71h
CX = number of keystrokes
DS:SI -> array of words containing keystrokes to be returned by AH=00h
Note: FAKEY is a keystroke faking utility by System Enhancement Associates
SeeAlso: AH=05h,AH=72h
----------1672-------------------------------
INT 16 - FAKEY.COM - CLEAR FAKED KEYSTROKES
AH = 72h
Note: FAKEY is a keystroke faking utility by System Enhancement Associates
SeeAlso: AH=71h
----------1673-------------------------------
INT 16 - FAKEY.COM - PLAY TONES
AH = 73h
CX = number of tones to play
DS:SI -> array of tones (see below)
Note: FAKEY is a keystroke faking utility by System Enhancement Associates
SeeAlso: INT 15/AX=1019h
Format of tone array entries:
Offset Size Description
00h WORD divisor for timer channel 2
02h WORD duration in clock ticks
----------1675-------------------------------
INT 16 - pcANYWHERE III - SET TICK COUNT FOR SCANNING
AH = 75h
AL = number of ticks between checks for new screen changes
----------1676-------------------------------
INT 16 - pcANYWHERE III - SET ERROR CHECKING TYPE
AH = 76h
AL = error checking type
00h none
01h fast
02h slow
----------1677-------------------------------
INT 16 - pcANYWHERE III - LOG OFF
AH = 77h
AL = mode
00h wait for another call
01h leave in Memory Resident Mode
02h leave in Automatic Mode
FFh leave in current operating mode
----------167761-----------------------------
INT 16 - WATCH.COM v2.x-v3.0 - INSTALLATION CHECK
AX = 7761h ('wa')
Return: AX = 5741h ('WA') if installed
Note: WATCH.COM is part of the "TSR" package by Kim Kokkonen
SeeAlso: INT 21/AX=7761h
----------167788BX7789-----------------------
INT 16 - PC Magazine PUSHDIR.COM - INSTALLATION CHECK
AX = 7788h
BX = 7789h
DS:SI -> signature "PUSHDIR VERSION 1.0"
Return: AX = 7789h if installed and signature correct
BX = 7788h
SI destroyed
----------1679-------------------------------
INT 16 - pcANYWHERE III - CHECK STATUS
AH = 79h
Return: AX = status
FFFFh if resident and active
FFFEh if resident but not active
FFFDh if in Memory Resident mode
FFFCh if in Automatic mode
other value if not resident
SeeAlso: AX=7B00h,INT 21/AX=2B44h
----------167A-------------------------------
INT 16 - pcANYWHERE III - CANCEL SESSION
AH = 7Ah
----------167B00-----------------------------
INT 16 - pcANYWHERE III - SUSPEND
AX = 7B00h
SeeAlso: AH=79h,AX=7B01h
----------167B01-----------------------------
INT 16 - pcANYWHERE III - RESUME
AX = 7B01h
SeeAlso: AH=79h,AX=7B00h
----------167C-------------------------------
INT 16 - pcANYWHERE III - GET PORT CONFIGURATION
AH = 7Ch
Return: AH = port number
AL = baud rate
00h = 50 baud
01h = 75 baud
02h = 110 baud
03h = 134.5 baud
04h = 150 baud
05h = 300 baud
06h = 600 baud
07h = 1200 baud
08h = 1800 baud
09h = 2000 baud
0Ah = 2400 baud
0Bh = 4800 baud
0Ch = 7200 baud
0Dh = 9600 baud
0Eh = 19200 baud
----------167D-------------------------------
INT 16 - pcANYWHERE III - GET/SET TERMINAL PARAMETERS
AH = 7Dh
AL = subfunction
00h set terminal parameters
01h get terminal parameters
02h get configuration header and terminal parameters
DS:CX -> terminal parameter block
----------167E-------------------------------
INT 16 - pcANYWHERE III - COMMUNICATIONS I/O THROUGH PORT
AH = 7Eh
AL = subfunction
01h port input status
Return AX = 0 if no characer ready,
AX = 1 if character ready
02h port input character
Return AL = received character
03h port output character in CX
11h hang up phone
----------167F-------------------------------
INT 16 - pcANYWHERE III - SET KEYBOARD/SCREEN MODE
AH = 7Fh
AL = subfunction
00h enable remote keyboard only
01h enable host keyboard only
02h enable both keyboards
08h display top 24 lines
09h display bottom 24 lines
10h Hayes modem
11h other modem
12h direct connect
----------1680-------------------------------
INT 16 - MAKEY.COM - INSTALLATION CHECK
AH = 80h
Return: AX = 1954h if installed
Note: MAKEY is a utility by System Enhancement Associates
----------168765BX4321-----------------------
INT 16 - AT.COM version 8/26/87 - API
AX = 8765h
BX = 4321h
CX = ??? or FFFFh
if CX = FFFFh
DX = number of event to remove or FFFFh
Return: ES:BX -> event record array
Note: AT.COM is a resident scheduler by Bill Frolik
Format of event record:
Offset Size Description
00h BYTE in-use flag (00h free, 01h in use, FFh end of array)
01h BYTE day of date on which to trigger
02h BYTE month of date on which to trigger
03h BYTE trigger time, minute
04h BYTE trigger time, hour
05h WORD offset of command to be executed
----------1692-------------------------------
INT 16 - ???
AH = 92h
Return: AH <= 80h if ???
Note: called by DOS 3.2 KEYBxx.COM and DOS 5.0 KEYB.COM
SeeAlso: AH=05h"PCjr",AH=A2h
----------1699-------------------------------
INT 16 - SCOUT v5.4 - GET ???
AH = 99h
Return: AX = ABCDh
BX:CX -> ??? (appears to be start of PSP for resident portion)
Note: Scout is a memory-resident file manager by New-Ware
SeeAlso: AH=9Eh
----------169E-------------------------------
INT 16 - SCOUT v5.4 - INSTALLATION CHECK
AH = 9Eh
Return: AX = ABCDh if installed
Note: Scout is a memory-resident file manager by New-Ware
SeeAlso: AH=99h
----------16A2-------------------------------
INT 16 - ???
AH = A2h
Return: AH <= 80h if ???
Note: this function is called by DOS 5.0 KEYB.COM
SeeAlso: AH=92h
----------16AA-------------------------------
INT 16 - PTxxx.COM - (xxx=CGA,EGA,VGA,HER...) CALL GATE FOR GRAPHICS
AH = AAh
Various registers set up by high level language.
Return: Graphics performed
Note: PT stands for Paint Tools which is a graphics library for Turbo Pascal,
Modula 2 and others from DataBiten in Sweden. The library is
installed as a memory resident driver.
----------16CA--BX736B-----------------------
INT 16 - CtrlAlt Associates STACKEY.COM v3.00 - API
AH = CAh
BX = 736Bh ("sk")
CX = 736Bh
AL = function
00h installation check
Return: DX = words available in keyboard buffer
01h place keystroke in buffer
DX = keystroke (DH = scan code, DL = ASCII character)
Return: DX = words available in keyboard buffer
FFFFh on error
02h flush STACKEY and BIOS keyboard buffers
Return: AX = CAFFh if installed
BX = segment of resident code
CX = STACKEY version (CH = major, CL = minor)
Note: STACKEY is a shareware keyboard-input faking TSR
----------16CA00BX6570-----------------------
INT 16 - CtrlAlt Associates EGAPAL.COM v1.00 - INSTALLATION CHECK
AX = CA00h
BX = 6570h ("ep")
CX = 6570h
Return: AX = CAFFh if installed
BX = segment of resident code
CX = ??? (0090h)
Note: EGAPAL is a TSR supplied with STACKEY which makes EGA palette settings
permanent across mode switches
SeeAlso: AX=CA00h/BX=7670h
----------16CA00BX7670-----------------------
INT 16 - CtrlAlt Associates VGAPAL.COM v1.00 - INSTALLATION CHECK
AX = CA00h
BX = 7670h ("vp")
CX = 7670h
Return: AX = CAFFh if installed
BX = segment of resident code
CX = ??? (0090h)
Note: VGAPAL is a TSR supplied with STACKEY which makes VGA palette settings
permanent across mode switches
SeeAlso: AX=CA00h/BX=6570h
----------16E0E0-----------------------------
INT 16 - TurboPower TSRs - ALTERNATE INSTALLATION CHECK
AX = E0E0h
Return: AX = 1F1Fh if installed
DWORD 0040h:00F0h -> last data block in TSR list (see AX=F0F0h)
Note: the returned TSR list provides support for communication among TSRs
built with TurboPower's Turbo Professional and Object Professional
libraries for Turbo Pascal
SeeAlso: AX=F0F0h
----------16ED--BHED-------------------------
INT 16 - BORLAND TURBO LIGHTNING - API
AH = EDh
BH = EDh
BL = function
00h installation check
Return: AX = 5205h
CH = major version
CL = minor version
01h ???
02h get resident CS
Return: AX = code segment of resident portion
03h get resident ???
Return: AX = offset of some buffer in resident code seg
04h ???
05h set ???
AL = 0 to 0Ch
Return: AX = status
0000h if OK
0001h if out of range.
06h ???
07h ???
08h ???
AL = char???
CX = ???
DX = ???
Return: AX = 0, 1 or 2
09h ???
0Ah ???
CX = ???
DX = ???
Return: AX = ???
0Bh ???
DS:SI -> ???
Return: AX = 0, 40h, 80h
0Ch ???
DS:SI -> ???
Return: AH = 0
AL = ???
0Dh set ???
(sets an internal flag)
0Eh ???
DS:SI -> ???
Return: AX = 0, 1 or 2.
0Fh ???
10h ???
Notes: AX in general returns an error code from most functions.
----------16F0-------------------------------
INT 16 - Compaq 386 - SET CPU SPEED
AH = F0h
AL = speed
00h equivalent to 6 MHz 80286 (COMMON)
01h equivalent to 8 MHz 80286 (FAST)
02h full 16 MHz (HIGH)
03h toggles between 8 MHz-equivalent and speed set by system board
switch (AUTO or HIGH)
08h full 16 MHz except 8 MHz-equivalent during floppy disk access
09h specify speed directly
CX = speed value, 1 (slowest) to 50 (full), 3 ~= 8088
SeeAlso: AH=F1h,AH=F3h
----------16F0F0-----------------------------
INT 16 - TurboPower TSRs - INSTALLATION CHECK
AX = F0F0h
Return: AX = 0F0Fh if installed
ES:DI -> last data block in TSR list
Note: the returned TSR list provides support for communication among TSRs
built with TurboPower's Turbo Professional and Object Professional
libraries for Turbo Pascal
SeeAlso: AX=E0E0h
Format of data block:
Offset Size Description
00h DWORD pointer to program tag (counted ASCII string)
04h WORD interface version number (0400h)
06h DWORD pointer to command entry point
0Ah DWORD pointer to previous data block (0000h:0000h if none)
0Eh DWORD pointer to next data block (0000h:0000h if none)
---swappable TSRs only---
12h DWORD pointer to swapping data
16h DWORD pointer to user data
more???
----------16F1-------------------------------
INT 16 - Compaq 386 - READ CURRENT CPU SPEED
AH = F1h
Return: AL = speed code (see AH=F0h)
if AL = 09h, CX = speed code
SeeAlso: AH=F0h,AH=F3h
----------16F2-------------------------------
INT 16 - Compaq 386 - DETERMINE ATTACHED KEYBOARD TYPE
AH = F2h
Return: AL = type
00h if 11-bit AT keyboard is in use
01h if 9-bit PC keyboard is in use
----------16F3-------------------------------
INT 16 - Compaq 80286s - SET CPU SPEED LIMIT (OVERRIDE JUMPER)
AH = F3h
AL = 00h limit is 6 Mhz
= 01h limit is 8 Mhz/6 Mhz
SeeAlso: AH=F0h,AH=F1h
----------16F398-----------------------------
INT 16 U - NORTON GUIDES - INSTALLATION CHECK
AX = F398h
Return: AX = 6A73h ("js")
BH = scan code of current hot key
BL = ASCII code of current hot key
Note: NG.EXE was written by John Socha
----------16F400-----------------------------
INT 16 - Compaq Systempro - CACHE CONTROLLER STATUS
AX = F400h
Return: AH = E2h
AL = status
00h not present
01h enabled
02h disabled
SeeAlso: AX=F401h,AX=F402h
----------16F401-----------------------------
INT 16 - Compaq Systempro - ENABLE CACHE CONTROLLER
AX = F401h
Return: AX = E201h
SeeAlso: AX=F400h,AX=F402h
----------16F402-----------------------------
INT 16 - Compaq Systempro - DISABLE CACHE CONTROLLER
AX = F402h
Return: AX = E202h
SeeAlso: AX=F400h,AX=F401h
----------16FA00DX5945-----------------------
INT 16 U - PC Tools v8+ VSAFE, VWATCH - INSTALLATION CHECK???
AX = FA00h
DX = 5945h
Return: CF clear
DI = 4559h
BX = ??? (2F00h or FFFFh) (VSAFE only)
SeeAlso: INT 13/AH=FAh,INT 21/AH=FAh"VDEFEND",INT 2F/AX=6282h
----------16FA01DX5945-----------------------
INT 16 U - PC Tools v8+ VSAFE, VWATCH - UNINSTALL
AX = FA01h
DX = 5945h
Return: CF clear if successful
FI = 4559h
SeeAlso: AX=FA00h
----------16FA02DX5945-----------------------
INT 16 U - PC Tools v8+ VSAFE, VWATCH - ???
AX = FA02h
DX = 5945h
BL = ???
Return: CF clear
DI = 4559h
CL = old value of ???
----------16FA03DX5945-----------------------
INT 16 U - PC Tools v8+ VSAFE, VWATCH - ???
AX = FA03h
DX = 5945h
Return: CF clear
DI = 4559h
AX = 0002h
----------16FA04DX5945-----------------------
INT 16 U - PC Tools v8+ VSAFE - GET ???
AX = FA04h
DX = 5945h
Return: CF clear
DI = 4559h
BL = ???
Note: this function is a NOP under VWATCH
SeeAlso: AX=FA05h
----------16FA05DX5945-----------------------
INT 16 U - PC Tools v8+ VSAFE - SET ???
AX = FA05h
DX = 5945h
BL = ???
Return: CF clear
DI = 4559h
Note: this function is a NOP under VWATCH
SeeAlso: AX=FA04h
----------16FA06DX5945-----------------------
INT 16 U - PC Tools v8+ VSAFE, VWATCH - GET ???
AX = FA06h
DX = 5945h
Return: CF clear
DI = 4559h
BL = ???
SeeAlso: AX=FA07h
----------16FA07DX5945-----------------------
INT 16 U - PC Tools v8+ VSAFE, VWATCH - SET ???
AX = FA07h
DX = 5945h
BL = ???
Return: CF clear
DI = 4559h
SeeAlso: AX=FA00h,AX=FA06h
----------16FE55-----------------------------
INT 16 U - PC Tools v8+ DATAMON, DRIVEMAP, CPSCHED, CPTASK - ???
AX = FE55h
CX = ???
DX = ???
???
Return: DX:AX -> ???
----------16FEA4-----------------------------
INT 16 U - PC Tools v7+ CPSCHED/DESKTOP - ???
AX = FEA4h
???
Return: ???
Note: this function is identical to AX=FFD3h, and is implemented by the same
code in DESKTOP
SeeAlso: AX=FFA4h
----------16FEC6-----------------------------
INT 16 U - PC Tools v7+ CPSCHED - ???
AX = FEC6h
DL = ???
???
Return: ???
----------16FED3-----------------------------
INT 16 U - PC Tools v7+ CPSCHED/DESKTOP - ???
AX = FED3h
DS:SI -> 92-byte data record for ???
Return: ???
Note: this function is identical to AX=FFD3h, and is implemented by the same
code in DESKTOP
SeeAlso: AX=FFD3h
----------16FEDC-----------------------------
INT 16 U - PC Tools v7+ CPSCHED - ???
AX = FEDCh
???
Return: ???
----------16FEEFCX0000-----------------------
INT 16 U - PC Tools v7+ CPSCHED/DESKTOP - INSTALLATION CHECK
AX = FEEFh
CX = 0000h
Return: CX = ABCDh if PC Tools scheduler (CPSCHED or DESKTOP) installed
BX = segment of resident portion
Note: this function is identical to AX=FFD3h, and is implemented by the same
code in DESKTOP
SeeAlso: AX=FFEFh
----------16FEF1-----------------------------
INT 16 U - PC Tools v7 only CPSCHED/DESKTOP - ALTERNATE INSTALLATION CHECK
AX = FEF1h
BX = ???
Return: CX = 5555h if PC Tools scheduler (CPSCHED or DESKTOP) installed
DX = 5555h
Note: this function is identical to AX=FFD3h, and is implemented by the same
code in DESKTOP
SeeAlso: AX=FFF1h
----------16FF-------------------------------
INT 16 - KEYBOARD - KBUF extensions - ADD KEY TO TAIL OF KEYBOARD BUFFER
AH = FFh
DX = scan code
Return: AL = status
00h success
01h failure
Note: KBUF is a keyboard buffer expander by Mark Adler
SeeAlso: AH=05h
----------16FF-------------------------------
INT 16 - OPTIMA 1024 VGA-Sync - QUERY ZOOM INTERRUPT
AH = FFh
Return: AL = interrupt number to which BIOS keyboard handler has been relocated
AL+1 = Zoom interrupt number
BX = hotkey
Note: The default interrupts are 60h for keyboard and 61h for Zoom interrupt;
the default hot key is F10
SeeAlso: INT 60"OPTIMA"
----------16FF70-----------------------------
INT 16 U - PC Tools v8+ DRIVEMAP - API???
AX = FF70h
BX = function (0000h-0002h)
???
Return: ???
BUG: this call will branch to random locations on BX=0003h-5CD6h under v8.0
due to range-testing the wrong register
SeeAlso: INT 2F/AH=92h"DRIVEMAP"
----------16FF80-----------------------------
INT 16 U - PC Tools v8+ CPTASK - API
AX = FF80h
BX = function (0000h-0009h or 4350h ['CP'])
???
Return: ???
----------16FF90-----------------------------
INT 16 U - PC Tools v8+ DESKTOP - ???
AX = FF90h
???
Return: ???
Note: available only when popped up
----------16FF91-----------------------------
INT 16 U - PC Tools v7+ DESKTOP - ???
AX = FF91h
???
Return: AX = 0000h
Note: calls AX=FFFDh after ???
SeeAlso: AX=FF92h,AX=FFFDh
----------16FF92-----------------------------
INT 16 U - PC Tools v7+ DESKTOP - ???
AX = FF92h
???
Return: AX = 0000h
Note: like AX=FF91h, but temporarily sets ??? to 3
SeeAlso: AX=FF91h,AX=FF92h
----------16FF93-----------------------------
INT 16 U - PC Tools v7+ DESKTOP - SET ??? FLAG
AX = FF93h
----------16FF94-----------------------------
INT 16 U - PC Tools v7+ DESKTOP - SET ???
AX = FF94h
CX = ??? (default 0017h)
----------16FF95-----------------------------
INT 16 U - PC Tools v7+ DESKTOP - SET ???
AX = FF95h
BX = ???
----------16FF96-----------------------------
INT 16 U - PC Tools v7+ DESKTOP - ???
AX = FF96h
CL = ???
Return: AX = ???
----------16FF97-----------------------------
INT 16 U - PC Tools v7+ DESKTOP - ???
AX = FF97h
DS:DX -> buffer for ??? (see below)
Return: ???
Format of buffer:
Offset Size Description
00h 48 BYTEs ???
30h 128 BYTEs ???
----------16FF98-----------------------------
INT 16 U - PC Tools v7+ DESKTOP - OPEN \DESK.OVL FILE AND SEEK TO OVERLAY
AX = FF98h
DX = byte offset in file of overlay header
Return: BX = file handle for DESK.OVL file
Desc: open the DESK.OVL file, seek to the specified offset, read in the
overlay header, and seek to the offset specified by the header
Format of overlay header:
Offset Size Description
00h 12 BYTEs NUL-padded ASCII overlay filename
0Ch DWORD offset within DESK.OVL file of actual overlay
----------16FF99-----------------------------
INT 16 U - PC Tools v7+ DESKTOP - ???
AX = FF99h
???
Return: ???
----------16FF9A-----------------------------
INT 16 U - PC Tools v7+ DESKTOP - GET NAME OF COLOR SCHEME
AX = FF9Ah
Return: ES:BX -> name of current color scheme
Note: available even if not popped up
----------16FF9B-----------------------------
INT 16 U - PC Tools v7+ DESKTOP - UNUSED
AX = FF9Bh
Return: ???
Note: sounds triple-length beep
----------16FF9C-----------------------------
INT 16 U - PC Tools v8+ CPTASK - ???
AX = FF9Ch
BL = ??? (00h,01h)
???
Return: ???
Note: sounds triple-length beep
----------16FF9D-----------------------------
INT 16 U - PC Tools v8+ CPTASK, VSAFE - ???
AX = FF9Dh
ES:BX -> ??? word
Return: ???
Note: if ES is non-zero, the word pointed at by ES:BX determines whether the
??? flag is cleared (word = 0000h) or set (word is nonzero). The
flag is always cleared if ES=0000h.
----------16FF9E-----------------------------
INT 16 U - PC Tools v7+ DESKTOP - ???
AX = FF9Eh
DL = ???
bit 7: ???
bits 6-0: function number??? (00h,01h,other)
???
Return: ???
----------16FFA1-----------------------------
INT 16 U - PC Tools v7+ DESKTOP - ???
AX = FFA1h
???
Return: ???
Note: same as AX=FFA2h, except ??? set to FFh
SeeAlso: AX=FFA2h
----------16FFA2-----------------------------
INT 16 U - PC Tools v7+ DESKTOP - ???
AX = FFA2h
???
Return: ???
Note: calls AX=FFC7h (remove window) and AX=FFFDh
SeeAlso: AX=FFA1h,AX=FFC7h,AX=FFFDh
----------16FFA3BX0000-----------------------
INT 16 U - PC Tools v7+ DATAMON - INSTALLATION CHECK
AX = FFA3h
BX = 0000h
CX = 0000h
Return: AX = segment of resident code
BX = 5555h
CX = 5555h
----------16FFA3BX0001-----------------------
INT 16 U - PC Tools v7+ DATAMON - GET ???
AX = FFA3h
BX = 0001h
CX = 0001h
Return: AX:BX -> ???
CX = BX
----------16FFA3BX0002-----------------------
INT 16 U - PC Tools v7+ DATAMON - GET ???
AX = FFA3h
BX = 0002h
CX = 0002h
Return: AX = ??? (0 or 1)
CX = BX = AX
----------16FFA3BX0003-----------------------
INT 16 U - PC Tools v7+ DATAMON - GET ???
AX = FFA3h
BX = 0003h
CX = 0003h
Return: AX = ??? (0 or 1)
CX = BX = AX
----------16FFA3BX0004-----------------------
INT 16 U - PC Tools v7+ DATAMON - SET ??? FLAG
AX = FFA3h
BX = 0004h
CX = 0004h
SeeAlso: AX=FFA3h/BX=0005h
----------16FFA3BX0005-----------------------
INT 16 U - PC Tools v7+ DATAMON - CLEAR ??? FLAG
AX = FFA3h
BX = 0005h
CX = 0005h
SeeAlso: AX=FFA3h/BX=0004h
----------16FFA3BX0006-----------------------
INT 16 U - PC Tools v7+ DATAMON - SET PSP SEGMENT ???
AX = FFA3h
BX = 0006h
CX = 0006h
DX = current PSP segment as known to DOS??? or 0000h
----------16FFA4-----------------------------
INT 16 U - PC Tools v7+ DESKTOP - ???
AX = FFA4h
Return: ???
Notes: available even when not popped up
sets unknown flag if ??? conditions met
SeeAlso: AX=FEA4h
----------16FFA5CX1111-----------------------
INT 16 - PC-Cache v6+ - INSTALLATION CHECK
AX = FFA5h
CX = 1111h
Return: CH = 00h if installed
ES:DI -> internal data (see below)
CL = cache state
01h enabled
02h disabled
SeeAlso: INT 13/AH=A0h,INT 21/AH=2Bh/CX=4358h
Format of internal data:
Offset Size Description
-1Ch 20 BYTEs cached drive list, one byte per drive A: to T:
each byte is either blank (20h) or drive letter (41h-54h)
-8 BYTE ???
-7 WORD number of physical transfers (scaled down to 0000h-7FFFh)
-5 WORD number of saved transfers (scaled down to 0000h-7FFFh)
-3 3 BYTEs ???
----------16FFA5CXAAAA-----------------------
INT 16 - PC-Cache v6+ - ENABLE DELAYED WRITES
AX = FFA5h
CX = AAAAh
Return: AX = ??? (apparently either 0000h or sectors_in_cache - 5)
SeeAlso: AX=FFA5h/CX=CCCCh
----------16FFA5CXCCCC-----------------------
INT 16 - PC-Cache v6+ - FLUSH CACHE AND DISABLE DELAYED WRITES
AX = FFA5h
CX = CCCCh
Return: AX = ??? (apparently either 0000h or sectors_in_cache - 5)
Note: delayed writes are automatically disabled on EXECing
(see INT 21/AH=4Bh) a program named either WIN.CO? or DV.E??;
however, delayed writes are not automatically reenabled upon the
program's termination in v6.
SeeAlso: AX=FFA5h/CX=AAAAh,AX=FFA5h/CX=FFFFh
----------16FFA5CXDDDD-----------------------
INT 16 - PC-Cache v6+ - FLUSH AND DISABLE CACHE
AX = FFA5h
CX = DDDDh
SeeAlso: AX=FFA5h/CX=EEEEh,AX=FFA5h/CX=FFFFh
----------16FFA5CXEEEE-----------------------
INT 16 - PC-Cache v6+ - ENABLE CACHE
AX = FFA5h
CX = EEEEh
SeeAlso: AX=FFA5h/CX=DDDDh
----------16FFA5CXFFFF-----------------------
INT 16 - PC-Cache v6+ - FLUSH CACHE
AX = FFA5h
CX = FFFFh
SeeAlso: AX=FFA5h/CX=CCCCh,AX=FFA5h/CX=DDDDh,INT 13/AH=A1h
----------16FFA6-----------------------------
INT 16 U - PC Tools v6.0+ DESKTOP API - GET ???
AX = FFA6h
Return: DS:SI -> ???
Note: available only when popped up
----------16FFA7-----------------------------
INT 16 U - PC Tools v6.0+ DESKTOP API - GET ??? PATH
AX = FFA7h
Return: DS:SI -> ASCIZ path (directory from which PCTools was run???)
----------16FFA8-----------------------------
INT 16 U - PC Tools v6.0+ DESKTOP API - ???
AX = FFA8h
DS:SI -> three consecutive ASCIZ strings for ??? (max 256 bytes total)
???
Return: ???
Notes: available only when popped up
strings copied into internal buffer, among other actions
----------16FFA9-----------------------------
INT 16 U - PC Tools v6.0+ DESKTOP API - GET VERSION STRING
AX = FFA9h
Return: DS:SI -> version string
----------16FFAA-----------------------------
INT 16 U - PC Tools v6.0+ DESKTOP API - ???
AX = FFAAh
???
Return: ???
Note: available only when popped up
----------16FFAB-----------------------------
INT 16 U - PC Tools v6.0+ DESKTOP API - GET EDITOR SETTINGS???
AX = FFABh
Return: DS:SI -> editor setting strings???
----------16FFAC-----------------------------
INT 16 U - PC Tools v6.0+ DESKTOP API - SET ???
AX = FFACh
DL = ???
Note: available only when popped up
----------16FFAD-----------------------------
INT 16 U - PC Tools v6.0+ DESKTOP API - SET ???
AX = FFADh
DL = ???
----------16FFAE-----------------------------
INT 16 U - PC Tools v6.0+ DESKTOP API - GET ???
AX = FFAEh
Return: AL = ???
----------16FFAF-----------------------------
INT 16 U - PC Tools v6.0+ DESKTOP API - SET ???
AX = FFAFh
DL = ???
----------16FFB0-----------------------------
INT 16 U - PC Tools v6.0+ DESKTOP API - SET ???
AX = FFB0h
BL = ???
----------16FFB1-----------------------------
INT 16 U - PC Tools v6.0+ DESKTOP API - ???
AX = FFB1h
???
Return: ???
----------16FFB2-----------------------------
INT 16 U - PC Tools v5.5+ DESKTOP API - GET ???
AX = FFB2h
Return: DS:SI -> ???
----------16FFB3-----------------------------
INT 16 U - PC Tools v5.5+ DESKTOP API - ???
AX = FFB3h
???
Return: ???
Note: available only when popped up
----------16FFB4-----------------------------
INT 16 U - PC Tools v5.5+ DESKTOP API - SET ??? FLAG
AX = FFB4h
Note: available only when popped up
SeeAlso: AX=FFBBh
----------16FFB5-----------------------------
INT 16 U - PC Tools v5.5+ DESKTOP API - GET/SET WINDOW PARAMETERS
AX = FFB5h
BX = window specifier (000Fh to 0019h) (see below)
DX = 0000h get, nonzero = set
ES:DI -> window parameter buffer (see below)
SeeAlso: AX=FFCBh
Values for window specifier:
000Fh comm/FAX
0014h hotkey selection
0015h ASCII table
0016h system colors menu
Format of window parameters:
Offset Size Description
00h BYTE rows in window, not counting frame
01h BYTE columns in window, not counting frame
02h BYTE row number of top of window
03h BYTE 2*column number of left of window
04h BYTE character attribute for ???
05h BYTE character attribute for background/border
06h BYTE character attribute for ???
07h DWORD pointer to ??? on screen
0Bh 4 BYTEs ???
0Fh BYTE nonzero if window may be resized
Note: if running in monochrome mode, character attributes at offsets 04h to
06h are stored unchanged, but attributes other than 07h, 0Fh, or 70h
are changed to 07h on reading
----------16FFB6-----------------------------
INT 16 U - PC Tools v5.5+ DESKTOP API - GET ???
AX = FFB6h
Return: AH = ???
AL = ???
----------16FFB7-----------------------------
INT 16 U - PC Tools v5.5+ DESKTOP API - GET/SET ???
AX = FFB7h
BX = direction
0000h copy to buffer
else copy from buffer
DS:SI -> 70-byte buffer with ???
Return: data copied
Note: available only when popped up under v6.0+
----------16FFB8-----------------------------
INT 16 U - PC Tools v5.1+ DESKTOP API - GET/SET???
AX = FFB8h
BH = subfunction
00h get
Return: BL = old value of ???
CL = old value of ??? (v6.0+)
CH = old value of ??? (v6.0+)
nonzero set
BL = new value for ???
CL = new value for ??? (v6.0+)
CH = new value for ??? (v6.0+)
DH = ???
Return: AL = old value replaced by CL (v6.0+)
AH = old value replaced by CH (v6.0+)
----------16FFB9-----------------------------
INT 16 U - PC Tools v5.1+ DESKTOP API - ???
AX = FFB9h
???
Return: AX = ???
CX = ???
DS:SI -> ???
ES:DI -> ???
----------16FFBA-----------------------------
INT 16 U - PC Tools v5.1+ DESKTOP API - ???
AX = FFBAh
???
Return: AX = ???
Note: available only when popped up
----------16FFBB-----------------------------
INT 16 U - PC Tools v5.1+ DESKTOP API - CLEAR ??? FLAG
AX = FFBBh
Note: available only when popped up
SeeAlso: AX=FFB4h
----------16FFBC-----------------------------
INT 16 U - PC Tools v5.1+ DESKTOP API - RESTORE ORIGINAL SCREEN???
AX = FFBCh
----------16FFBD-----------------------------
INT 16 U - PC Tools v5.1+ DESKTOP API - ??? DATABASE INDEXING MESSAGES
AX = FFBDh
???
Return: ???
----------16FFBE-----------------------------
INT 16 U - PC Tools v5.1+ DESKTOP API - ???
AX = FFBEh
???
Return: ???
Note: available only when popped up
----------16FFBF-----------------------------
INT 16 U - PC Tools v5.1+ DESKTOP API - ???
AX = FFBFh
BX = DOS file handle to write on
???
Return: ???
Note: available only when popped up
----------16FFC0-----------------------------
INT 16 U - PC Tools v5.1+ DESKTOP API - ???
AX = FFC0h
???
Return: AX = 0000h if successful
AX = FFFFh on error
Note: available only when popped up
----------16FFC1-----------------------------
INT 16 U - PC Tools v5.1+ DESKTOP API - ???
AX = FFC1h
BL = ???
ES:DI -> data structure (see below)
???
Return: AX = ???
Note: available only when popped up
SeeAlso: AX=FFC2h,AX=FFC3h
Format of data structure:
Offset Size Description
00h WORD ???
02h WORD ???
04h WORD ???
06h WORD ???
08h WORD ???
0Ah BYTE ???
0Bh BYTE ??? (zero/nonzero)
---v7.1---
0Ch WORD ???
0Eh BYTE ???
0Fh WORD ???
11h WORD ???
???
----------16FFC2-----------------------------
INT 16 U - PC Tools v5.1+ DESKTOP API - ???
AX = FFC2h
BL = ???
ES:DI -> data structure (see AX=FFC1h)
???
Return: AH = ???
CX = ???
DH = ???
DL = ???
Note: available only when popped up
SeeAlso: AX=FFC1h,AX=FFC3h
----------16FFC3-----------------------------
INT 16 U - PC Tools v5.1+ DESKTOP API - ???
AX = FFC3h
BL = ???
ES:DI -> data structure (see AX=FFC1h)
???
Return: AH = ???
CX = ???
DH = ???
DL = ???
Note: available only when popped up
SeeAlso: AX=FFC1h,AX=FFC2h
----------16FFC4-----------------------------
INT 16 U - PC Tools v5.1+ DESKTOP API - GET ???
AX = FFC4h
Return: AL = ???
BX = segment of scratch space???
CX = segment of stored screen data (section covered by window???)
DX = segment of window parameters for ???
ES:BP -> ???
Note: available only when popped up in versions prior to 6.0
----------16FFC5-----------------------------
INT 16 U - PC Tools v5.1+ DESKTOP API - CHECK WHETHER DESKTOP LOADED RESIDENT
AX = FFC5h
Return: BL = nonzero if loaded resident
= 00h if nonresident
Note: available only when popped up; should call AX=FFEFh first to ensure
that DESKTOP is active
SeeAlso: AX=FFEFh,AX=FFF3h
----------16FFC6-----------------------------
INT 16 U - PC Tools v5.1+ DESKTOP API - SET ???
AX = FFC6h
BL = new value for ???
----------16FFC7-----------------------------
INT 16 U - PC Tools v5.1+ DESKTOP API - REMOVE WINDOW
AX = FFC7h
???
Return: ???
----------16FFC8-----------------------------
INT 16 U - PC Tools v5.1+ DESKTOP API - GET ???
AX = FFC8h
Return: DS:SI -> ???
Note: valid only while popped up
----------16FFC9-----------------------------
INT 16 U - PC Tools v5.1+ DESKTOP API - COPY DATA TO CLIPBOARD
AX = FFC9h
DS:SI -> characters to store in clipboard
CX = size in bytes
Return: CF set on error
Notes: available only when popped up
while copying, bytes of 00h and 0Ah are skipped
----------16FFCA-----------------------------
INT 16 U - PC Tools v5.1+ DESKTOP API - SET ???
AX = FFCAh
DX = ???
Return: AX destroyed
Note: available only when popped up
----------16FFCB-----------------------------
INT 16 U - PC Tools v5.1+ DESKTOP API - SELECT WINDOW PARAMETERS???
AX = FFCBh
DX = window specifier???
Return: AX destroyed
Note: available only when popped up
SeeAlso: AX=FFB5h
----------16FFCC-----------------------------
INT 16 U - PC Tools v5.1+ DESKTOP API - DISPLAY ASCIZ STRING CENTERED IN WINDOW
AX = FFCCh
DS:SI -> ASCIZ string
Return: AX = ???
CX = ???
ES:DI -> address past last character displayed (v5.1/5.5)
-> ??? on menu bar (v6.0)
----------16FFCD-----------------------------
INT 16 U - PC Tools v5.1+ DESKTOP API - ???
AX = FFCDh
DS:DX -> ???
Return: ???
Note: available only when popped up
----------16FFCE-----------------------------
INT 16 U - PC Tools v5.1+ DESKTOP API - SET ??? DELAYS
AX = FFCEh
CX = ???
Return: nothing???
----------16FFCF-----------------------------
INT 16 U - PC Tools v5.1+ DESKTOP API - CLOSE PRINTER/PRINT FILE
AX = FFCFh
Note: available only when popped up
----------16FFD0-----------------------------
INT 16 U - PC Tools v5.1+ DESKTOP API - PREPARE TO PRINT???
AX = FFD0h
???
Return: ???
Note: available only when popped up
----------16FFD1-----------------------------
INT 16 U - PC Tools v5.1+ DESKTOP API - DISPLAY PRINT OPTIONS MENU
AX = FFD1h
Return: BX = number of copies
DX = destination
00h cancel
01h LPT1
02h LPT2
03h LPT3
04h COM1
05h COM2
06h disk file
Note: available only when popped up
----------16FFD2-----------------------------
INT 16 U - PC Tools v5.1+ DESKTOP API - ???
AX = FFD2h
BX = ???
Return: BL = ???
Note: available only when popped up
----------16FFD3-----------------------------
INT 16 U - PC Tools v5.1+ DESKTOP API - ???
AX = FFD3h
DS:SI -> 92-byte data record for ???
Return: ???
SeeAlso: AX=FED3h
----------16FFD4BH3C-------------------------
INT 16 U - PC Tools v5.1+ DESKTOP API - CREATE/OPEN/DELETE FILE
AX = FFD4h
BH = 3Ch create file (with no attributes)
3Dh open file
41h delete file
BL = access mode
00h read only
01h write only
02h read/write
DS:SI -> ASCIZ filename
Return: BX = file handle
0000h on error
Note: operation is attempted in (in order) the directory from which the
desktop was started/run???, the directory specified with the
filename, X:\PCTOOLS\, and X:\
----------16FFD5-----------------------------
INT 16 U - PC Tools v5.1+ DESKTOP API - ???
AX = FFD5h
???
Return: ???
Note: available only when popped up
----------16FFD6-----------------------------
INT 16 U - PC Tools v5.1+ DESKTOP API - ???
AX = FFD6h
BX = ???
CX = ???
DX = offset in ???
???
Return: ???
Note: available only when popped up
----------16FFD7-----------------------------
INT 16 U - PC Tools v5.1+ DESKTOP API - ???
AX = FFD7h
???
Return: BL = ???
Note: available only when popped up
----------16FFD8-----------------------------
INT 16 U - PC Tools v5.1+ DESKTOP API - SAFE CREATE FILE
AX = FFD8h
DS:BX -> ASCIZ filename
Return: BX = file handle
0000h on error
Note: pops up confirmation menu if file already exists
only available when popped up???
----------16FFD9-----------------------------
INT 16 U - PC Tools v5.1+ DESKTOP API - GET ???
AX = FFD9h
Return: AX = ???
Note: available only when popped up
----------16FFDA-----------------------------
INT 16 U - PC Tools v5.1+ DESKTOP API - GET NAME OF LAST FILE OPENED
AX = FFDAh
DS:SI -> ??? (v5.1/5.5 only)
Return: DS:SI -> filename
----------16FFDB-----------------------------
INT 16 U - PC Tools v5.1+ DESKTOP API - SET ???
AX = FFDBh
BL = ???
Note: available only when popped up
----------16FFDC-----------------------------
INT 16 U - PC Tools v5.1+ DESKTOP API - UNHOOK
AX = FFDCh
Return: interrupt vectors 09h, 10h (v6.0+), 16h, 1Ch, and 21h restored to
original values
----------16FFDDBX0000-----------------------
INT 16 U - PC Tools v5.1+ PCShell API - INSTALLATION CHECK
AX = FFDDh
BX = 0000h
Return: CX = 5555h
DX = 5555h if PCShell installed in resident mode
----------16FFDDBX0001-----------------------
INT 16 U - PC Tools v5.1+ PCShell API - REQUEST POP-UP
AX = FFDDh
BX = 0001h
Return: CF clear if request successful (PCShell will pop up)
CF set on error
SeeAlso: AX=FFDDh/BX=0003h
----------16FFDDBX0002-----------------------
INT 16 U - PC Tools v5.1-5.5 PCShell API - GET ???
AX = FFDDh
BX = 0002h
Return: AL =
00h ???
01h ???
Note: PCShell v6.0+ displays the error message "Incorrect PCRUN version",
awaits a keystroke, and aborts the current process
----------16FFDDBX0003-----------------------
INT 16 U - PC Tools v5.1+ PCShell API - REQUEST POP-UP
AX = FFDDh
BX = 0003h
SeeAlso: AX=FFDDh/BX=0001h
----------16FFDDBX0004-----------------------
INT 16 U - PC Tools v5.1+ PCShell API - GET ???
AX = FFDDh
BX = 0004h
Return: CF clear if successful
DS:SI -> ???
----------16FFDDBX0005-----------------------
INT 16 U - PC Tools v5.1+ PCShell API - ???
AX = FFDDh
BX = 0005h
???
Return: ???
Note: resets various variables if certain conditions are met
----------16FFDDBX0006-----------------------
INT 16 U - PC Tools v5.1+ PCShell API - ???
AX = FFDDh
BX = 0006h
???
Return: ???
Note: resets various variables if certain conditions are met
----------16FFDDBX0007-----------------------
INT 16 U - PC Tools v5.1+ PCShell API - SET ??? FLAG
AX = FFDDh
BX = 0007h
Return: CF clear if successful
SeeAlso: AX=FFDDh/BX=0008h
----------16FFDDBX0008-----------------------
INT 16 U - PC Tools v5.1+ PCShell API - CLEAR ??? FLAG
AX = FFDDh
BX = 0008h
Return: CF undefined
SeeAlso: AX=FFDDh/BX=0007h
----------16FFDDBX0009-----------------------
INT 16 U - PC Tools v6.0+ PCShell API - GET PCRUN PARAMETERS
AX = FFDDh
BX = 0009h
Return: CF clear if successful
DS:SI -> list of pointers (see below)
Format of returned pointer list:
Offset Size Description
00h WORD offset of WORD containing ???
02h WORD offset of name of program to execute
04h WORD offset of 80-byte buffer for ???
06h WORD offset of buffer for ??? (length in WORD preceding buffer)
08h WORD offset of buffer for ??? (length in WORD preceding buffer)
----------16FFDDBX000A-----------------------
INT 16 U - PC Tools v6.0+ PCRUN API - INSTALLATION CHECK
AX = FFDDh
BX = 000Ah
Return: CX = 5555h if running
DX = 5555h
Note: also sets a flag
----------16FFDDBX000B-----------------------
INT 16 U - PC Tools v6.0+ PCRUN API - ???
AX = FFDDh
BX = 000Bh
???
Return: CX = 5555h if PCRUN active
DX = 5555h
Note: also clears flag set by AX=FFDDh/BX=000Ah
----------16FFDE-----------------------------
INT 16 U - PC Tools v5.1+ DESKTOP API - DISPLAY POPUP MENU
AX = FFDEh
DS:DX -> menu description (must be on a paragraph boundary)
Return: AX = ???
AL seems to be the number of the selected button
Note: available only when popped up
SeeAlso: AX=FFEEh
----------16FFDF-----------------------------
INT 16 U - PC Tools v5.1+ DESKTOP API - ???
AX = FFDFh
???
Return: ???
----------16FFE0-----------------------------
INT 16 U - PC Tools v5.1+ DESKTOP API - ???
AX = FFE0h
CX = ???
DX = ???
Note: available only when popped up
----------16FFE1-----------------------------
INT 16 U - PC Tools v5.1+ DESKTOP API - BEEP
AX = FFE1h
----------16FFE2-----------------------------
INT 16 U - PC Tools v5.1+ DESKTOP API - ???
AX = FFE2h
DX = ???
Return: ???
Note: available only when popped up
----------16FFE3-----------------------------
INT 16 U - PC Tools v5.1+ DESKTOP API - PRINT CHARACTER
AX = FFE3h
BL = character to print to currently open printer or print file
Return: CF set on error
Note: available only when popped up
SeeAlso: INT 17/AH=00h
----------16FFE4-----------------------------
INT 16 U - PC Tools v5.1+ DESKTOP API - ???
AX = FFE4h
DX = segment of ???
Return: ???
Note: available only when popped up
----------16FFE5-----------------------------
INT 16 U - PC Tools v5.1+ DESKTOP API - POP UP FILE SELECTION MENU
AX = FFE5h
DS:SI -> ASCIZ wildcard filespec followed by ASCIZ menu title
DX = segment of window parameters???
Return: AX = DOS file handle for file
DS:DX -> filename???
= FFFFh if cancelled by user
Note: available only when popped up
SeeAlso: AX=FFDAh
----------16FFE6-----------------------------
INT 16 U - PC Tools v5.1+ DESKTOP API - CHECK FOR AND GET KEYSTROKE
AX = FFE6h
Return: AX = 0000h if no key available
else BIOS keycode
Notes: available only when popped up
invokes INT 28 idle interrupt before checking for key
----------16FFE7-----------------------------
INT 16 U - PC Tools v5.1+ DESKTOP API - ???
AX = FFE7h
BX = segment of ???
Return: ???
Note: available only when popped up
----------16FFE8-----------------------------
INT 16 U - PC Tools v5.1+ DESKTOP API - DISPLAY NUMBER
AX = FFE8h
CX = number
DH = attribute
DS:SI -> destination for ASCII number
Return: DS:SI buffer filled in with alternating characters and attributes
----------16FFE9-----------------------------
INT 16 U - PC Tools v5.1+ DESKTOP API - GET FILE LIST???
AX = FFE9h
Return: BX = segment of file/directory list (14 bytes per file, NUL-padded)
Note: available only when popped up
----------16FFEA-----------------------------
INT 16 U - PC Tools v5.1+ DESKTOP API - DISPLAY COUNTED STRING
AX = FFEAh
DS:SI -> counted string (count byte followed by string)
Return: ???
Note: available only when popped up
----------16FFEB-----------------------------
INT 16 U - PC Tools v5.1+ DESKTOP API - ???
AX = FFEBh
???
Return: ???
----------16FFEC-----------------------------
INT 16 U - PC Tools v5.1+ DESKTOP API - GET KEY
AX = FFECh
DS:SI -> FAR routine to ???
BX = ???
???
Return: AX = keystroke
FFFFh if F10 pressed to go to menu
Notes: available only when popped up
invokes INT 28 while waiting for keystroke
F10 is hotkey to Desktop menu
----------16FFED-----------------------------
INT 16 U - PC Tools v5.1+ DESKTOP API - GET ???
AX = FFEDh
Return: AX = ???
Note: available only when popped up
----------16FFEE-----------------------------
INT 16 U - PC Tools v5.1+ DESKTOP API - DEFINE PULLDOWN MENUS
AX = FFEEh
DS:SI -> pulldown menu system description (see below)
Return: AX destroyed
Notes: available only when popped up
if the accessory does not need any menu items of its own, it should
call AX=FFFAh instead
SeeAlso: AX=FFF7h,AX=FFFAh
Format of pulldown menu system description:
Offset Size Description
00h WORD offset of menu bar contents (counted string)
02h WORD number of items on menu bar
04h 10 BYTEs scan codes for hotkeying to each of up to ten menu items
0Eh 10 BYTEs which character to highlight in each menu item (01h=first)
18h WORD offset of first menu definition (see below)
1Ah WORD offset of second menu definition
...
Format of menu definition:
Offset Size Description
00h WORD offset of menu contents (see below)
02h WORD number of entries in menu
04h for each entry:
Offset Size Description
00h BYTE scancode of Alt-key to invoke entry
01h BYTE character to highlight (01h=first, etc)
02h WORD offset of FAR routine to handle selection
Format of menu contents:
Offset Size Description
00h BYTE number of lines in menu
01h BYTE width of menu
02h N BYTEs counted strings, one for each line in menu
----------16FFEFCX0000-----------------------
INT 16 U - PC Tools v5.1+ DESKTOP API - INSTALLATION CHECK
AX = FFEFh
CX = 0000h
Return: CX = ABCDh if PC Tools DESKTOP.EXE installed
BX = segment of resident portion
AX = ??? (v5.1/5.5 only)
SeeAlso: AX=FEEFh,AX=FFC5h,AX=FFF3h
----------16FFF0-----------------------------
INT 16 U - PC Tools v5.1+ DESKTOP API - SET ???
AX = FFF0h
DX = ???
Return: AX destroyed
Note: available only when popped up
----------16FFF1BX0000-----------------------
INT 16 U - PC Tools v5.1+ DESKTOP API - ALTERNATE INSTALLATION CHECK
AX = FFF1h
BX = 0000h leave ??? flag as is
nonzero set ??? flag
Return: CX = 5555h if installed
DX = 5555h
----------16FFF2-----------------------------
INT 16 U - PC Tools v5.1+ DESKTOP API - DISPLAY HELP LINE
AX = FFF2h
DS:SI -> ASCIZ function key label string (each label preceded by '[')
or help text
Return: AX destroyed
Notes: available only when popped up
if the specified string does not start with '[', it is displayed
centered on the bottom line, else the function key labels are shown
----------16FFF3-----------------------------
INT 16 U - PC Tools v5.1+ DESKTOP API - PREPARE TO UNLOAD RESIDENT DESKTOP
AX = FFF3h
Note: releases any EMS being used; restores video mode, page, and cursor
shape; and restores interrupt vectors
SeeAlso: AX=FFC5h,AX=FFEFh
----------16FFF4-----------------------------
INT 16 U - PC Tools v5.1+ DESKTOP API - ???
AX = FFF4h
???
Return: ???
Note: available only when popped up
SeeAlso: AX=FFF6h
----------16FFF5-----------------------------
INT 16 U - PC Tools v5.1+ DESKTOP API - GET SCREEN ATTRIBUTE ARRAY
AX = FFF5h
Return: ES:BX -> screen attributes data structure (see below)
AL = ??? (v6.0+)
Format of attribute data structure:
Offset Size Description
-1 BYTE attribute for desktop background
00h BYTE attribute for normal characters on desktop menu
01h BYTE attribute for highlighted characters on desktop menu
02h 5 BYTEs ???
07h BYTE attribute for dialog boxes
08h 15 BYTEs ???
17h BYTE attribute for message boxes
----------16FFF6-----------------------------
INT 16 U - PC Tools v5.1+ DESKTOP API - INVOKE NOTEPAD EDITOR
AX = FFF6h
DS = segment of editor buffer structure (see below)
BX = ???
DX = segment of window parameters structure (see AX=FFB5h)
Return: ???
Note: available only when popped up
SeeAlso: AX=FFF4h
Format of editor buffer structure:
Offset Size Description
00h WORD offset of current cursor position in buffer segment
02h 2 BYTEs ???
04h WORD offset of beginning of file data in buffer segment
06h 10 BYTEs ???
10h N BYTEs ASCIZ name of file being edited
----------16FFF7-----------------------------
INT 16 U - PC Tools v5.1+ DESKTOP API - PROCESS MENU BAR ENTRY???
AX = FFF7h
DS:SI -> ???
???
Return: ???
Notes: available only when popped up
performs input processing on the menu bar set up with AX=FFEEh
SeeAlso: AX=FFEEh,AX=FFFBh
----------16FFF8-----------------------------
INT 16 U - PC Tools v5.1+ DESKTOP API - DRAW EMPTY WINDOW
AX = FFF8h
DS:0000h -> window parameters structure (see AX=FFB5h)
DS:BX -> DWORD to store address of ??? on screen
Return: ???
----------16FFF9-----------------------------
INT 16 U - PC Tools v5.1+ DESKTOP API - DEFINE SCREEN REFRESH ROUTINE
AX = FFF9h
ES:BX -> FAR routine to redisplay the utility's window
Note: available only when popped up
----------16FFFA-----------------------------
INT 16 U - PC Tools v5.1+ DESKTOP API - DEFINE STANDARD PULLDOWN MENUS
AX = FFFAh
Notes: available only when popped up
adds the "Window" option to the "Desktop" option which is the only one
available when no accessories are active. Unlike AX=FFEEh, no
additional menu items are added between "Desktop" and "Window"
SeeAlso: AX=FFEEh,AX=FFFBh
----------16FFFB-----------------------------
INT 16 U - PC Tools v5.1+ DESKTOP API - PROCESS STANDARD MENU BAR
AX = FFFBh
Return: ???
Notes: available only when popped up
performs input processing on the standard menu bar set up with AX=FFFAh
SeeAlso: AX=FFF7h
----------16FFFC-----------------------------
INT 16 U - PC Tools v5.1+ DESKTOP API - GET HOTKEYS AND KEYBOARD VECTOR
AX = FFFCh
Return: ES:BX -> hotkey table (see below)
DS:DX = original INT 9 vector
Format of hotkey table:
Offset Size Description
00h 2 BYTEs scancode/shift state for desktop hotkey
02h 2 BYTEs scancode/shift state for clipboard paste key
04h 2 BYTEs scancode/shift state for clipboard copy key
06h 2 BYTEs scancode/shift state for screen autodial key
----------16FFFD-----------------------------
INT 16 U - PC Tools v5.1+ DESKTOP API - COPY ???
AX = FFFDh
Return: AX destroyed
Note: copies 4000 bytes from ??? to ??? under certain circumstances
SeeAlso: AX=FF91h,AX=FF92h
----------16FFFE-----------------------------
INT 16 U - PC Tools v5.1+ DESKTOP API - SHOW MOUSE CURSOR
AX = FFFEh
SeeAlso: AX=FFFFh,INT 33/AX=0001h
----------16FFFF-----------------------------
INT 16 U - PC Tools v5.1+ DESKTOP API - HIDE MOUSE CURSOR
AX = FFFFh
SeeAlso: AX=FFFEh,INT 33/AX=0002h
----------17----DX0ABC-----------------------
INT 17 - PRINTER - LPTx v5.x INSTALLATION CHECK
DX = 0ABCh
Return: AX = AAAAh
DX = BAAAh
ES = code segment of resident portion
----------17----DX0B90-----------------------
INT 17 - PRINTER - LPTx v6.x INSTALLATION CHECK
DX = 0B90h
Return: DX = ABBBh
ES = code segment of resident portion
----------17----DX0B91-----------------------
INT 17 - PRINTER - LPTx v7.x INSTALLATION CHECK
DX = 0B91h
Return: DX = ABCBh
ES = code segment of resident portion
----------17----DX0F5F-----------------------
INT 17 - PRINTER - LPTx v4.x INSTALLATION CHECK
DX = 0F5Fh
Return: AX = AAAAh
DX = F555h
ES = code segment of resident portion
----------1700-------------------------------
INT 17 - PRINTER - WRITE CHARACTER
AH = 00h
AL = character to write
DX = printer number (00h-02h)
Return: AH = printer status
bit 7: not busy
6: acknowledge
5: out of paper
4: selected
3: I/O error
2: unused
1: unused
0: timeout
SeeAlso: AH=84h"AX",AH=F1h,INT 16/AX=FFE3h,INT 1A/AH=11h"NEC"
----------1701-------------------------------
INT 17 - PRINTER - INITIALIZE PORT
AH = 01h
DX = printer number (00h-02h)
Return: AH = printer status (see AH=00h)
SeeAlso: AH=02h,INT 1A/AH=10h"NEC"
----------1702-------------------------------
INT 17 - PRINTER - GET STATUS
AH = 02h
DX = printer number (00h-02h)
Return: AH = printer status (see AH=00h)
SeeAlso: AH=01h,AH=F2h,INT 1A/AH=12h"NEC"
----------1702--DX0000-----------------------
INT 17 - INSET - INSTALLATION CHECK
AH = 02h
DX = 0000h
CX = 07C3h (1987d)
Return: CX = 07C2h (1986d) if installed
Note: INSET is a text/graphics integration program
----------1720-------------------------------
INT 17 - PC Paint Plus 2.0 - PRINTER DRIVER
AH = 20h
AL = function number
00h installation check
Return: BX = driver version number (BH=major,BL=minor)
CH = ??? (00h)
CL = ???
DX = ??? (0100h)
Note: also enables the remaining functions
01h set ??? flag
02h get information
CL = subfunction
00h get printer type
Return: ES:DI -> ASCIZ printer name
01h get paper size
DX = size index
Return: ES:DI -> ASCIZ paper size description
02h get ???
Return: BX = ???
03h get printer information???
DX = ???
ES:BX -> buffer for ??? (min 134 bytes)
03h ???
ES:BX -> ???
04h get ???
Return: ES:DI -> ???
05h advance printer to next page
Note: also clears flag set by function 01h
06h advance printer to next page and shut down
Note: also clears flag set by function 01h and disables
functions other than 00h
07h not implemented, AX returned unchanged
BL = printer number???
Return: AX = status
0000h successful
0001h invalid printer???
0002h ???
0003h invalid subfunction
0005h driver disabled, must call function 00h first
0009h unknown printer error
000Bh printer not selected
000Ch printer out of paper
000Eh error while writing to serial printer
000Fh ???
0010h invalid function number
0011h value out of range
----------172400-----------------------------
INT 17 - Shamrock Software NET.24 v3.11+ - ENABLE/DISABLE API FUNCTIONS
AX = 2400h
DL = new state
00h disabled
01h enabled
Return: DL = 24h if installed
DH = minor version number
CX = network address of this machine
AL = status
00h successful
01h timeout
02h header error
03h data error
04h busy
05h invalid parameters
SeeAlso: AX=2403h,INT 16/AX=4500h
----------172401-----------------------------
INT 17 - Shamrock Software NET.24 v3.11+ - RECEIVE BLOCK, NO HANDSHAKE
AX = 2401h
BL = timeout in clock ticks
Return: AL = status (see AX=2400h)
DX:BX -> receive buffer
SeeAlso: AX=2402h,AX=2404h,AX=2408h
----------172402-----------------------------
INT 17 - Shamrock Software NET.24 v3.11+ - TRANSMIT BLOCK, NO HANDSHAKE
AX = 2402h
transmit buffer filled (see AX=2403h)
Return: AL = status (see AX=2400h)
SeeAlso: AX=2401h,AX=2403h,AX=2404h,AX=2409h
----------172403-----------------------------
INT 17 - Shamrock Software NET.24 v3.11+ - GET STATUS AND TRANSMISSION BUFFER
AX = 2403h
Return: AL = status (see AX=2400h)
CX = number of characters in receive ring buffer
DX:BX -> transmit buffer
SeeAlso: AX=2400h,AX=2402h
----------172404-----------------------------
INT 17 - Shamrock Software NET.24 v3.11+ - SEND ACK BLOCK
AX = 2404h
BX = target address
Return: AL = status (see AX=2400h)
SeeAlso: AX=2402h,AX=2405h
----------172405-----------------------------
INT 17 - Shamrock Software NET.24 v3.11+ - SEND NAK BLOCK
AX = 2405h
BX = target address
Return: AL = status (see AX=2400h)
SeeAlso: AX=2402h,AX=2404h
----------172406-----------------------------
INT 17 - Shamrock Software NET.24 v3.11+ - PREPARE CHARACTER-ORIENTED RECEIVE
AX = 2406h
Return: AL = status (see AX=2400h)
SeeAlso: AX=2407h,AX=240Ah
----------172407-----------------------------
INT 17 - Shamrock Software NET.24 v3.11+ - RECEIVE CHARACTER FROM REMOTE
AX = 2407h
Return: AL = status (see also AX=2400h)
06h end of data
DL = received character
SeeAlso: AX=2406h
----------172408-----------------------------
INT 17 - Shamrock Software NET.24 v3.11+ - RECEIVE BLOCK, WITH HANDSHAKE
AX = 2408h
Return: AL = status (see also AX=2400h)
06h end of data
CX = number of bytes in receive buffer
DX:SI -> receive buffer
SeeAlso: AX=2401h,AX=2405h,AX=2409h
----------172409-----------------------------
INT 17 - Shamrock Software NET.24 v3.11+ - TRANSMIT COMMAND, WITH HANDSHAKE
AX = 2409h
BX = target address
CX = number of data bytes
DL = command code to send
DS:SI -> data bytes for command
Return: AL = status (see also AX=2400h)
03h no response
06h remote currently unable to perform command
SeeAlso: AX=2405h,AX=2408h
----------17240A-----------------------------
INT 17 - Shamrock Software NET.24 v3.11+ - PREPARE CHARACTER-ORIENTED TRANSMIT
AX = 240Ah
Return: AL = status (see AX=2400h)
SeeAlso: AX=2406h,AX=240Bh,AX=240Ch
----------17240B-----------------------------
INT 17 - Shamrock Software NET.24 v3.11+ - TRANSMIT SINGLE CHARACTER TO REMOTE
AX = 240Bh
DL = character to send
Return: AL = status (see also AX=2400h)
03h transmission error
06h write error
SeeAlso: AX=2407h,AX=240Ah,AX=240Ch
----------17240C-----------------------------
INT 17 - Shamrock Software NET.24 v3.11+ - END CHARACTER-ORIENTED TRANSMIT
AX = 240Ch
Return: AL = status (see also AX=2400h)
03h transmission error
06h remote breaks connection
SeeAlso: AX=240Ah,AX=240Bh
----------175000-----------------------------
INT 17 - AX (Japanese AT) PRINTER - SET PRINTER COUNTRY CODE
AX = 5000h
BX = country code
0001h USA (English), 0051h Japan
Return: AL = status
00h successful
01h bad country code
02h other error
SeeAlso: AX=5001h,AH=51h,INT 10/AX=5000h,INT 16/AX=5000h
----------175001-----------------------------
INT 17 - AX (Japanese AT) PRINTER - GET PRINTER COUNTRY CODE
AX = 5001h
Return: AL = status
00h successful
BX = country code
02h error
SeeAlso: AX=5000h,AH=51h,INT 10/AX=5001h,INT 16/AX=5001h
----------1751-------------------------------
INT 17 - AX (Japanese AT) PRINTER - JIS to Shift-JIS CONVERSION
AH = 51h
DX = 2-byte JIS code
Return: DX = shift-JIS value or 0000h on error
Note: one of AH=51h and AH=52h converts from JIS (Japanese Industry Standard)
characters to Shift-JIS characters, and the other performs the
opposite conversion
SeeAlso: AX=5000h,AH=52h
----------1752-------------------------------
INT 17 - AX (Japanese AT) PRINTER - Shift-JIS to JIS CONVERSION
AH = 52h
DX = 2-byte shift-JIS code
Return: DX = JIS code or 0000h on error
Note: one of AH=51h and AH=52h converts from JIS (Japanese Industry Standard)
characters to Shift-JIS characters, and the other performs the
opposite conversion
SeeAlso: AH=51h
----------1760-------------------------------
INT 17 - FLASHUP.COM - INSTALLATION CHECK
AH = 60h
Return: AL = 60h
DX = CS of resident code
Notes: FLASHUP.COM is part of Flash-Up Windows by The Software Bottling Co.
FLASHUP also hooks INT 10 and receives commands via INT 10/AH=09h,0Ah
consisting of an 80h followed by the actual command
SeeAlso: INT 10/AH=09h,INT 10/AH=0Ah
----------1761-------------------------------
INT 17 - SPEEDSCR.COM - INSTALLATION CHECK
AH = 61h
Return: AL = 61h
DX = CS of resident code
Note: SPEEDSCR.COM is by The Software Bottling Co.
----------1781-------------------------------
INT 17 - Alloy NTNX, MW386 - CANCEL JOBS FOR CURRENT USER
AH = 81h
AL = 00h (NTNX compatibility mode)
CL = number of jobs to cancel
Return: AL = status
00h success
01h..7Fh warning
80h general failure
81h host overloaded (NTNX only)
82h module busy (NTNX only)
83h host busy (NTNX only)
84h re-entry flag set
85h invalid request
86h invalid printer
87h invalid process ID
89h access denied
8Ah option not available for given port type
8Bh option not available for given task type
91h printer busy
C2h file not found
C3h path not found
C4h file access failure
Note: cancels the last CL printouts for the current task
SeeAlso: AH=82h
----------1782-------------------------------
INT 17 - Alloy NTNX, MW386 - CANCEL ALL JOBS FOR CURRENT USER
AH = 82h
AL = 00h (NTNX compatibility mode)
Return: AL = status (see AH=81h)
SeeAlso: AH=81h
----------1783-------------------------------
INT 17 - Alloy NTNX, MW386 - SET NUMBER OF COPIES
AH = 83h
AL = mode
00h NTNX compatibility
CL = number of copies (max 99, default 1)
02h MW386 v2+
BX = logical device number
00h-03h = LPT1-LPT4
04h-07h = COM1-COM4
CX = number of copies
Return: AL = status (see AH=81h)
Note: in NTNX compatibility mode, this function only affects LPT1
----------1784-------------------------------
INT 17 - Alloy NTNX, MW386 - GENERATE PRINT BREAK
AH = 84h
AL = mode
00h NTNX compatibility
02h MW386 v2+
BX = logical device number
00h-03h = LPT1-LPT4
04h-07h = COM1-COM4
Note: closes spool file and tells spooler to queue the print job (LPT1 only
under MW386 in NTNX compatibility mode)
----------1784-------------------------------
INT 17 - AX (Japanese AT) PRINTER - OUTPUT CHARACTER WITHOUT CONVERSION
AH = 84h
AL = character
DX = printer number
Return: AH = printer status (see AH=00h)
SeeAlso: AH=00h,AH=85h
----------1785-------------------------------
INT 17 - AX (Japanese AT) PRINTER - ENABLE/DISABLE CHARACTER CONVERSION
AH = 85h
AL = new state (00h enabled, 01h disabled)
SeeAlso: AH=84h"AX"
----------1787-------------------------------
INT 17 - Alloy NTNX - SET INDOS POINTER
AH = 87h
AL = 00h
CX:BX -> buffer for user-written printer drivers
Return: BX,CX destroyed
Note: must be executed before the printer is enabled
SeeAlso: AH=8Ah
----------1788-------------------------------
INT 17 - Alloy NTNX, MW386 - REMOVE PRINTER FROM SPOOLER
AH = 88h
AL = mode
00h NTNX compatibility
DX = NTNX printer number
00h host LPT1
01h host LPT2
02h host LPT3
03h host LPT4
04h host COM1
05h host COM2
06h user's logical COM2
07h user's terminal AUX port
08h user's logical COM1 (MW386 only)
01h MW386
DX = MW386 printer number
Return: AH = status (see AH=81h)
Note: removes specified printer from the spooler's list of printers
SeeAlso: AH=89h,AH=8Bh
----------1789-------------------------------
INT 17 - Alloy NTNX, MW386 - ADD PRINTER TO SPOOLER
AH = 89h
AL = mode
00h NTNX compatibility
DX = NTNX printer number (see AH=88h)
01h MW386
DX = MW386 printer number
Return: AL = status (see AH=81h)
Note: the specified printer is added to the spooler's list of available
printers
SeeAlso: AH=88h,AH=8Bh
----------178A-------------------------------
INT 17 - Alloy NTNX - ACTIVATE USER-WRITTEN PRINTER DRIVER
AH = 8Ah
???
SeeAlso: AH=92h
----------178B-------------------------------
INT 17 - Alloy MW386 - GET PHYSICAL DEVICE NUMBER FROM NAME
AH = 8Bh
DS:DX -> ASCIZ printer name
Return: AL = status (see also AH=81h)
00h successful
DX = physical device number
SeeAlso: AH=89h,AH=8Ch,INT 14/AH=20h"Alloy"
----------178C-------------------------------
INT 17 - Alloy MW386 - GET DEVICE NAME FROM PHYSICAL DEVICE NUMBER
AH = 8Ch
DX = physical device number
ES:DI -> 17-byte buffer for ASCIZ device name
Return: AL = status (see also AH=81h)
00h successful
ES:DI buffer filled
SeeAlso: AH=88h,AH=8Bh
----------178D-------------------------------
INT 17 - Alloy NTNX,MW386 - RESET SPOOLER
AH = 8Dh
AL = 00h
Notes: clears all buffers and resets spooler to boot-up values
MW386 supports this function for compatibility only; it is a NOP
Return: AL = status (see AH=81h)
----------178E-------------------------------
INT 17 - Alloy NTNX - GET INT 28 ENTRY POINT
AH = 8Eh
AL = 00h
Return: CX:BX -> INT 28 entry point
SeeAlso: AH=8Fh
----------178F-------------------------------
INT 17 - Alloy NTNX - GET DOS INTERCEPT ENTRY POINT
AH = 8Fh
AL = 00h
Return: CX:BX -> DOS intercept routine
SeeAlso: AH=8Eh
----------1790-------------------------------
INT 17 - Alloy NTNX, MW386 - SPOOL FILE BY NAME
AH = 90h
AL = mode
00h NTNX compatibility
DL = printer code (FFh=current) (NTNX, MW386 v1.x only)
DH = number of copies (FFh=current) (NTNX, MW386 v1.x only)
02h MW386 v2+
BX = logical device number
00h-03h = LPT1-LPT4
04h-07h = COM1-COM4
CX:SI -> ASCIZ pathname
Return: AL = status (see AH=81h)
Note: in mode 00h, the file is always sent to logical LPT1
SeeAlso: AH=A0h
----------1791-------------------------------
INT 17 - Alloy NTNX, MW386 - GET USER NUMBER AND CURRENT PRINTER
AH = 91h
AL = mode
00h NTNX compatibility
Return: CX = user number (00h = host)
DX = currently selected printer number (00h-08h)
01h MW386
Return: CX = user number
DX = physical dev number of currently selected printer
02h MW386 v2+
BX = logical device number
00h-03h = LPT1-LPT4
04h-07h = COM1-COM4
Return: CX = user number
DX = physical device number
Return: AL = status (see AH=81h)
SeeAlso: AH=8Ch
----------1792-------------------------------
INT 17 - Alloy NTNX - CHECK PRINTER DRIVER
AH = 92h
AL = 00h
CL = 00h
Return: CL = driver state
01h initialized
80h not initialized
AX = status (see AH=81h)
SeeAlso: AH=8Ah
----------1794-------------------------------
INT 17 - Alloy NTNX, MW386 - SELECT PRINTER
AH = 94h
AL = mode
00h NTNX compatibility
DX = NTNX printer number (see AH=88h)
01h MW386
DX = MW386 printer number
02h MW386 v2+
BX = logical printer number
DX = MW386 printer number
Return: AL = status (see AH=81h)
Note: modes 00h and 01h affect only logical LPT1
SeeAlso: AH=8Bh,AH=95h
----------1795-------------------------------
INT 17 - Alloy NTNX, MW386 - GET CURRENT PRINTER
AH = 95h
AL = mode
00h NTNX compatibility
Return: DX = NTNX printer number (see AH=88h)
(FFFFh if current printer not compatible with NTNX)
01h MW386
Return: DX = MW386 printer number
02h MW386 v2+
BX = logical device number
00h-03h = LPT1-LPT4
04h-07h = COM1-COM4
Return: DX = MW386 printer number (FFFFh = none)
Return: AL = status (see AH=81h)
Note: modes 00h and 01h return the printer number of logical LPT1 only
SeeAlso: AH=94h
----------1796-------------------------------
INT 17 - Alloy NTNX - SET SERIAL PORT PARAMETERS
AH = 96h
AL = 00h
Note: documentation states that this is a NOP, doing only XOR AX,AX before
returning
SeeAlso: INT 14/AH=24h
----------1797-------------------------------
INT 17 - Alloy NTNX, MW386 - SET DATA DRIVEN PRINT BREAK
AH = 97h
AL = mode
00h NTNX compatibility
02h MW386 v2+
BX = logical device number
00h-03h = LPT1-LPT4
04h-07h = COM1-COM4
CH,CL,DH = three character break sequence
DL = subfunction
00h set break string
else reset break
Return: AL = status (see AH=81h)
Notes: mode 00h affects only logical LPT1
when the break string is encountered, the spool file will be closed and
queued for printing automatically
the break string is not permanently saved, and will be reset each time
MW386 or the user is rebooted
SeeAlso: AH=9Bh
----------1798-------------------------------
INT 17 - Alloy NTNX,MW386 - RESTART PRINTER
AH = 98h
AL = 00h
DL = printer number (FFh=current)
Return: AL = status
00h successful
01h incorrect printer
02h task not found
Note: MW386 supports this function for compatibility only; it is a NOP
----------1799-------------------------------
INT 17 - Alloy NTNX, MW386 - GET/SET PRINTER MODE
AH = 99h
AL = mode
00h NTNX compatibility
DL = NTNX printer number (see AH=88h)
(FFh = task's current logical LPT1)
DH = mode
bit 0: get mode if 1, set mode if 0
1: private ("attached")
2: direct instead of spooled
3-7 reserved (0)
01h MW386
DX = MW386 printer number
CL = mode (as for DH above)
Return: AL = status (see AH=81h)
DH = mode (bits 1 and 2 set as above)
DL = printer owner's user number if not spooled
----------179A-------------------------------
INT 17 - Alloy NTNX,MW386 - SET TAB EXPANSION
AH = 9Ah
AL = mode
00h NTNX compatibility
DX = NTNX printer number (see AH=88h)
(FFFFh = current logical LPT1)
01h MW386
DX = MW386 printer number
CL = tab length (00h = no expansion, 01h-63h = spaces per tab)
Return: AL = status (see AH=81h)
Note: beginning with MW386 v2.0, tab expansion is set on a per-printer basis
rather than a per-user basis; NTNX and MW386 v1.x ignore DX
SeeAlso: AH=A4h
----------179B-------------------------------
INT 17 - Alloy NTNX,MW386 - SET PRINT BREAK TIMEOUT
AH = 9Bh
AL = mode
00h NTNX compatibility
CX = timeout value in clock ticks (1/18 sec) (00h = never)
01h MW386
CX = timeout value in seconds (00h = never)
02h MW386 v2+
BX = logical device number
00h-03h = LPT1-LPT4
04h-07h = COM1-COM4
CX = timeout value in seconds (00h = never)
Return: AL = status (see AH=81h)
Notes: modes 00h and 01h affect only the current logical LPT1
if no data is sent to a printer for the specified amount of time, the
spool file will be closed and queued for printing automatically
SeeAlso: AH=97h
----------17A0-------------------------------
INT 17 - Alloy MW386 - SPOOL COPY OF FILE
AH = A0h
AL = mode
00h NTNX compatibility
DX = ??? (NTNX, MW386 v1.x only)
02h MW386 v2+
BX = logical device number
00h-03h = LPT1-LPT4
04h-07h = COM1-COM4
CX:SI -> ASCIZ pathname
Return: AL = status (see AH=81h)
Notes: makes a copy of the specified file in the spooler's directory, allowing
the original file to be modified or deleted while the copy is printed
in mode 00h, the file is printed on logical LPT1
SeeAlso: AH=90h
----------17A4-------------------------------
INT 17 - Alloy MW386 - ENABLE/DISABLE FORM FEED
AH = A4h
AL = new state
00h form feed after end of print job disabled
01h form feed enabled
Return: AL = status (see AH=81h)
Note: only affects the current logical LPT1
SeeAlso: AH=9Ah,AH=A6h,INT 7F/AH=05h"NTNX (Host)"
----------17A6-------------------------------
INT 17 - Alloy MW386 - ENABLE/DISABLE BANNER PAGE
AH = A6h
AL = new state
00h banner page before print job disabled
01h banner page enabled
Return: AL = status (see AH=81h)
Note: only affects the current logical LPT1
SeeAlso: AH=A4h
----------17A7-------------------------------
INT 17 - Alloy MW386 v2+ - GET/SET SPOOL FLAGS
AH = A7h
AL = spool flags
bit 0: banner page enabled (see AH=A4h)
1: form feed enabled (see AH=A6h)
2-6: reserved (0)
7: set flags if 1, get flags if 0
BX = logical device number
00h-03h = LPT1-LPT4
04h-07h = COM1-COM4
Return: AL = status (see AH=81h)
Note: the documentation does not state which register contains the result of
a GET
SeeAlso: AH=A4h,AH=A6h
----------17A8-------------------------------
INT 17 - Alloy MW386 - DEFINE TEMPORARY FILENAME
AH = A8h
CX:SI -> ASCIZ filename without extension (max 8 chars)
Return: AL = status (see AH=81h)
Note: allows application to specify banner page filename for spool files
collected from the application's printer output
SeeAlso: AH=A9h
----------17A9-------------------------------
INT 17 - Alloy MW386 - CHANGE TEMPORARY SPOOL DRIVE
AH = A9h
AL = new spool drive (2=C:,3=D:,etc)
Return: AL = status (see AH=81h)
Note: does not remove previous spooling directory since jobs may be pending
SeeAlso: AH=A8h
----------17AA-------------------------------
INT 17 - Alloy MW386 v2+ - GET REAL-TIME PRINTER STATUS
AH = AAh
AL = mode
00h NTNX
DX = NTNX printer number (see AH=88h)
01h MW386
DX = MW386 printer number
Return: AH = instantaneous printer status
00h printer ready
01h not ready
12h off line
13h out of paper
14h general device failure
15h device timeout
16h bad device number
----------17AF-------------------------------
INT 17 - Alloy MW386 - CHECK SPOOLER
AH = AFh
Return: AX = 55AAh if spooler available
----------17C0-------------------------------
INT 17 - PC Magazine PCSpool - GET CONTROL BLOCK ADDRESS
AH = C0h
DX = printer port (0-3)
Return: ES:BX -> control block (see below)
SeeAlso: AH=C1h
Format of control block:
Offset Size Description
00h WORD printer number
02h WORD address of printer status port
04h WORD number of first record in queue
06h WORD number of last record in queue
08h DWORD characters already printed
0Ch DWORD number of characters remaining
10h DWORD pointer to dequeue buffer
14h DWORD previous count of characters printed
18h DWORD number of clock ticks taken to print them
1Ch WORD offset of next character to output
1Eh WORD offset of next character to print
20h WORD pointer to spooling queue record
22h BYTE current spooling status
23h BYTE current printer status:
00h OK
01h not ready
02h paused with message
03h paused
04h initializing
FEh non-existent port
FFh not spooled
24h BYTE current control record type
25h WORD observed printer speed
27h WORD characters to print per service
29h BYTE 01h if disk write needed
2Ah BYTE 01h if queued data should be flushed
2Bh BYTE 01h to update cps status
----------17C1--------------------------------
INT 17 - PC Magazine PCSpool - BUILD PAUSE CONTROL RECORD
AH = C1h
DX = printer port (0-3)
DS:SI -> ASCIIZ string to save for display
Note: flushes pending writes
SeeAlso: AH=C0h,AH=C2h
----------17C2-------------------------------
INT 17 - PC Magazine PCSpool - FLUSH PENDING WRITES
AH = C2h
DX = printer port (0-3)
SeeAlso: AH=C3h
----------17C3-------------------------------
INT 17 - PC Magazine PCSpool - CANCEL PRINTER QUEUE (FLUSH ALL QUEUED OUTPUT)
AH = C3h
DX = printer port (0-3)
SeeAlso: AH=C2h,AH=C7h
----------17C4-------------------------------
INT 17 - PC Magazine PCSpool - QUERY SPOOLER ACTIVE
AH = C4h
Return: DI = B0BFh
SI = segment
----------17C5-------------------------------
INT 17 - PC Magazine PCSpool - JOB SKIP PRINTER QUEUE
AH = C5h
DX = printer port (0-3)
Note: cancels up to the pause record
----------17C6-------------------------------
INT 17 - PC Magazine PCSpool - CHECK PRINTER QUEUE STATUS
AH = C6h
DX = printer port (0-3)
Return: AX = 0 printer not active or at pause
= 1 printer busy
----------17C7-------------------------------
INT 17 - PC Magazine PCSpool - CLOSE QUEUE
AH = C7h
DX = printer port (0-3)
SeeAlso: AH=C3h
----------17CD00-----------------------------
INT 17 - INSET - EXECUTE COMMAND STRING
AX = CD00h
DS:DX -> ASCIZ command string (max 80 bytes)
Return: CX = 07C2h (1986d)
Note: user interface menus pop up after last command, unless that command
exits INSET
----------17CD01-----------------------------
INT 17 - INSET - GET IMAGE SIZE
AX = CD01h
DS:DX -> ASCIZ name of image file
Return: AX = height in 1/720th inch
BX = width in 1/720th inch
CX = 07C2h (1986d)
----------17CD02-----------------------------
INT 17 - INSET - INITIALIZE
AX = CD02h
Return: CX = 07C2h (1986d)
Note: all open files are closed and the printer is reset
SeeAlso: AX=CD04h
----------17CD03-----------------------------
INT 17 - INSET - EXECUTE INSET MENU WITHIN OVERRIDE MODE
AX = CD03h
Return: CX = 07C2h (1986d)
----------17CD04-----------------------------
INT 17 - INSET - INITIALIZE LINKED MODE
AX = CD04h
ES:SI -> FAR routine for linked mode
Return: CX = 07C2h
Note: calling sequence for linked-mode routine
AL = 00h send character in BL to printer
= 01h send CX bytes from DS:DX to printer
= 02h move print head to horizontal starting position of image
return code for linked-mode routine:
AX = 0000h success
= 0001h failure
SeeAlso: AX=CD02h,AX=CD08h
----------17CD05-----------------------------
INT 17 - INSET - START MERGING IMAGE INTO TEXT
AX = CD05h
DS:DX -> ASCIZ name of PIX file
CX = left margin of text in 1/720th inch
Return: AH = printer type
00h page-oriented (multiple images may be placed side-by-side)
01h line-oriented (use AX=CD06h for vertical paper movement)
CX = 07C2h (1986d)
SeeAlso: AX=CD07h
----------17CD06-----------------------------
INT 17 - INSET - GRAPHICS LINE FEED
AX = CD06h
Return: AH = completion status
00h image complete
01h image incomplete
CX = 07C2h (1986d)
SeeAlso: AX=CD09h
----------17CD07-----------------------------
INT 17 - INSET - FLUSH GRAPHICS FROM MERGE BUFFER
AX = CD07h
Return: CX = 07C2h
SeeAlso: AX=CD05h
----------17CD08-----------------------------
INT 17 - INSET - CANCEL LINK MODE
AX = CD08h
Return: CX = 07C2h
SeeAlso: AX=CD04h
----------17CD09-----------------------------
INT 17 - INSET - ALTER TEXT LINE SPACING
AX = CD09h
CX = line spacing in 1/720th inch
Return: CX = 07C2h
Note: not yet implemented, line spacing is currently fixed at 1/6 inch
SeeAlso: AX=CD06h
----------17CD0A-----------------------------
INT 17 - INSET - GET SETUP
AX = CD0Ah
DS:DX -> buffer for IN.SET data
Return: CX = 07C2h
----------17CD0B-----------------------------
INT 17 - INSET - START GETTING SCALED IMAGE
AX = CD0Bh
DS:SI -> ASCIZ pathname of .PIX file
BX = number of bitplanes
CX = number of rows in output bitmap
DX = number of columns in output bitmap
Return: AX = status
0000h OK
FFFFh error
Note: image is returned in strips by repeated calls to AX=CD0Ch
----------17CD0C-----------------------------
INT 17 - INSET - GET NEXT IMAGE STRIP
AX = CD0Ch
Return: AX = status
0000h OK but not complete
0001h OK and image complete
FFFFh error
DS:SI -> buffer (max 4K) for bit map strip
CX = start row
DX = number of rows
BX = offset in bytes between bit planes
Note: buffer may be overwritten by subsequent calls
SeeAlso: AX=CD0Bh
----------17F0-------------------------------
INT 17 - NorthNet Jetstream API - INSTALLATION CHECK
AH = F0h
DX = printer port (0-3)
Return: AX = 0001h Jetstream present
else non-Jetstream port
Note: NorthNet Jetstream is a high-performance DMA-driven parallel card able
to drive printers at up to 80000 characters per second
----------17F1-------------------------------
INT 17 - NorthNet Jetstream API - PRINT DATA BUFFER
AH = F1h
CX = data buffer length
DX = printer port (0-3)
DS:SI -> data buffer
Return: AX = status
0000h printer not ready (see also AH=02h)
other printing started
SeeAlso: AH=00h,AH=F2h,AH=F3h,AH=F5h
----------17F2-------------------------------
INT 17 - NorthNet Jetstream API - GET PRINT PROGRESS STATUS
AH = F2h
DX = printer port (0-3)
Return: AX = status
0000h prior print request finished
other number of characters left to print
SeeAlso: AH=02h,AH=F1h,AH=F3h
----------17F3-------------------------------
INT 17 - NorthNet Jetstream API - ABORT PRINT OPERATION
AH = F3h
DX = printer port (0-3)
Return: AX = number of unprinted characters due to abort
SeeAlso: AH=F1h,AH=F4h
----------17F4-------------------------------
INT 17 - NorthNet Jetstream API - SET COMPLETION (POST) ADDRESS
AH = F4h
DX = printer port (0-3)
DS:DS -> FAR post address (called with interrupts on)
SeeAlso: AH=F1h,AH=F3h
----------17F5-------------------------------
INT 17 - NorthNet Jetstream API - PRINT DATA BUFFER FROM EXTENDED MEMORY
AH = F5h
CX = data buffer length
DX = printer port (0-3)
DS:SI -> data buffer (32-bit physical address)
Return: AX = status
0000h printer not ready (see also AH=02h)
other printing started
SeeAlso: AH=F1h
----------18---------------------------------
INT 18 - START CASSETTE BASIC
Note: only PCs produced by IBM contain BASIC in ROM, so the action is
unpredicatable on compatibles; this interrupt often reboots the
system, and often has no effect at all
SeeAlso: INT 86"NetBIOS"
----------1800-------------------------------
INT 18 - NEC PC-9800 series - KEYBOARD - GET KEYSTROKE
AH = 00h
Return: AX = keystroke
SeeAlso: AH=01h,AH=02h,INT 16/AH=00h
----------1801-------------------------------
INT 18 - NEC PC-9800 series - KEYBOARD - CHECK FOR KEYSTROKE
AH = 01h
Return: ZF set if no keystroke available
ZF clear if keystroke available
AX = keystroke
SeeAlso: AH=00h,AH=02h,INT 16/AH=01h
----------1802-------------------------------
INT 18 - NEC PC-9800 series - KEYBOARD - GET SHIFT STATUS
AH = 02h
Return: AL = shift flags
SeeAlso: AH=00h,AH=02h,AH=03h,AH=04h,INT 16/AH=02h
----------1803-------------------------------
INT 18 - NEC PC-9800 series - KEYBOARD - INITIALIZE
AH = 03h
???
Return: ???
SeeAlso: AH=00h,AH=04h
----------1804-------------------------------
INT 18 - NEC PC-9800 series - KEYBOARD - KEY PRESSED
AH = 04h
???
Return: ???
Note: details are not available at this time
SeeAlso: AH=00h,AH=02h,INT 16/AH=00h,INT 16/AH=01h,INT 16/AH=02h
----------18---------------------------------
INT 18 - NEC PC-9800 series - VIDEO
AH = function
0Ah set video mode
0Bh get video mode
0Ch start text screen display
0Dh end text screen display
0Eh set single display area
0Fh set multiple display area
10h set cursor shape
11h display cursor
12h terminate cursor
13h set cursor position
14h read font patter
16h initialize text video RAM
1Ah define user character
???
Return: ???
Notes: details are not available at this time
text video RAM is located at segments A000h (characters) and A200h
(attributes)
----------19---------------------------------
INT 19 - SYSTEM - BOOTSTRAP LOADER
Reboot the system without clearing memory or restoring interrupt vectors.
Because interrupt vectors are preserved, this interrupt usually causes a
system hang if any TSRs have hooked vectors from 00h through 1Ch,
particularly INT 08.
Usually, the BIOS will try to read sector 1, head 0, track 0 from drive A:
to 0000h:7C00h. If this fails, and a hard disk is installed, the BIOS will
read sector 1, head 0, track 0 of the first hard disk. This sector should
contain a master bootstrap loader and a partition table. After loading the
master boot sector at 0000h:7C00h, the master bootstrap loader is given
control. It will scan the partition table for an active partition, and will
then load the operating system's bootstrap loader (contained in the first
sector of the active partition) and give it control.
True IBM PCs issue an INT 18 if neither floppy nor hard disk have a valid
boot sector.
Notes: to accomplish a warm boot equivalent to Ctrl-Alt-Del, store 1234h in
0040h:0072h and jump to FFFFh:0000h. For a cold boot equivalent to
a reset, store 0000h at 0040h:0072h before jumping.
VDISK.SYS hooks this interrupt to allow applications to find out how
much extended memory has been used by VDISKs (see below). DOS 3.3+
PRINT hooks INT 19 but does not set up a correct VDISK header block
at the beginning of its INT 19 handler segment, thus causing some
programs to overwrite extended memory which is already in use.
default handler is at F000h:E6F2h for 100% compatible BIOSes
SeeAlso: INT 14/AH=17h,INT 18
Format of VDISK header block (at beginning of INT 19 handler's segment):
Offset Size Description
00h 18 BYTEs n/a (for VDISK.SYS, the device driver header)
12h 11 BYTEs signature string "VDISK Vn.m" for VDISK.SYS version n.m
1Dh 15 BYTEs n/a
2Ch 3 BYTEs linear address of first byte of available extended memory
Format of hard disk master boot sector:
Offset Size Description
00h 446 BYTEs Master bootstrap loader code
1BEh 16 BYTEs partition record for partition 1 (see below)
1CEh 16 BYTEs partition record for partition 2
1DEh 16 BYTEs partition record for partition 3
1EEh 16 BYTEs partition record for partition 4
1FEh WORD signature, AA55h indicates valid boot block
Format of partition record:
Offset Size Description
00h BYTE boot indicator (80h = active partition)
01h BYTE partition start head
02h BYTE partition start sector (bits 0-5)
03h BYTE partition start track (bits 8,9 in bits 6,7 of sector)
04h BYTE operating system indicator (see below)
05h BYTE partition end head
06h BYTE partition end sector (bits 0-5)
07h BYTE partition end track (bits 8,9 in bits 6,7 of sector)
08h DWORD sectors preceding partition
0Ch DWORD length of partition in sectors
Values for operating system indicator:
00h empty
01h DOS 12-bit FAT
02h XENIX root file system
03h XENIX /usr file system (obsolete)
04h DOS 16-bit FAT
05h DOS 3.3+ extended partition
06h DOS 3.31+ Large File System
07h QNX
07h OS/2 HPFS
07h Advanced Unix
08h AIX bootable partition, SplitDrive
09h AIX data partition
09h Coherent filesystem
0Ah OPUS
0Ah Coherent swap partition
10h OPUS
24h NEC MS-DOS 3.x
40h VENIX 80286
50h Disk Manager, read-only partition
51h Disk Manager, read/write partition
51h Novell???
52h CP/M
52h Microport System V/386
56h GoldenBow VFeature
61h SpeedStor
63h Unix SysV/386, 386/ix
63h Mach, MtXinu BSD 4.3 on Mach
63h GNU HURD
64h Novell NetWare
75h PC/IX
80h Minix v1.1 - 1.4a
81h Minix v1.4b+
81h Linux
82h Linux Swap partition (planned)
93h Amoeba file system
94h Amoeba bad block table
B7h BSDI file system (secondarily swap)
B8h BSDI swap partition (secondarily file system)
C6h DR-DOS 6.0 LOGIN.EXE-secured partition
DBh CP/M, Concurrent CP/M, Concurrent DOS
DBh CTOS (Convergent Technologies OS)
E1h SpeedStor 12-bit FAT extended partition
E4h SpeedStor 16-bit FAT extended partition
F2h DOS 3.3+ secondary
FEh LANstep
FFh Xenix bad block table
----------1A00-------------------------------
INT 1A - TIME - GET SYSTEM TIME
AH = 00h
Return: CX:DX = number of clock ticks since midnight
AL = midnight flag, nonzero if midnight passed since time last read
Notes: there are approximately 18.2 clock ticks per second, 1800B0h per 24 hrs
IBM and many clone BIOSes set the flag for AL rather than incrementing
it, leading to loss of a day if two consecutive midnights pass
without a request for the time (e.g. if the system is on but idle)
SeeAlso: AH=01h,AH=02h,INT 21/AH=2Ch
----------1A01-------------------------------
INT 1A - TIME - SET SYSTEM TIME
AH = 01h
CX:DX = number of clock ticks since midnight
SeeAlso: AH=00h,AH=03h,INT 21/AH=2Dh
----------1A02-------------------------------
INT 1A - TIME - GET REAL-TIME CLOCK TIME (AT,XT286,PS)
AH = 02h
Return: CF clear if successful
CH = hour (BCD)
CL = minutes (BCD)
DH = seconds (BCD)
DL = daylight savings flag (00h standard time, 01h daylight time)
CF set on error (i.e. clock not running or in middle of update)
SeeAlso: AH=00h
----------1A03-------------------------------
INT 1A - TIME - SET REAL-TIME CLOCK TIME (AT,XT286,PS)
AH = 03h
CH = hour (BCD)
CL = minutes (BCD)
DH = seconds (BCD)
DL = daylight savings flag (00h standard time, 01h daylight time)
SeeAlso: AH=01h
----------1A04-------------------------------
INT 1A - TIME - GET REAL-TIME CLOCK DATE (AT,XT286,PS)
AH = 04h
Return: CF clear if successful
CH = century (BCD)
CL = year (BCD)
DH = month (BCD)
DL = day (BCD)
CF set on error
SeeAlso: AH=02h,AH=05h,INT 21/AH=2Ah
----------1A05-------------------------------
INT 1A - TIME - SET REAL-TIME CLOCK DATE (AT,XT286,PS)
AH = 05h
CH = century (BCD)
CL = year (BCD)
DH = month (BCD)
DL = day (BCD)
SeeAlso: AH=04h,INT 21/AH=2Bh
----------1A06-------------------------------
INT 1A - TIME - SET ALARM (AT,XT286,PS)
AH = 06h
CH = hour (BCD)
CL = minutes (BCD)
DH = seconds (BCD)
Return: CF set on error (alarm already set or clock stopped for update)
CF clear if successful
Note: the alarm occurs every 24 hours until turned off, invoking INT 4A each
time
SeeAlso: AH=07h,INT 4A
----------1A07-------------------------------
INT 1A - TIME - CANCEL ALARM (AT,XT286,PS)
AH = 07h
Return: alarm disabled
Note: does not disable the real-time clock's IRQ
SeeAlso: AH=06h,INT 70
----------1A08-------------------------------
INT 1A - TIME - SET RTC ACTIVATED POWER ON MODE (CONVERTIBLE)
AH = 08h
CH = hours in BCD
CL = minutes in BCD
DH = seconds in BCD
----------1A09-------------------------------
INT 1A - TIME - READ RTC ALARM TIME AND STATUS (CONV,PS30)
AH = 09h
Return: CH = hours in BCD
CL = minutes in BCD
DH = seconds in BCD
DL = alarm status
00h alarm not enabled
01h alarm enabled but will not power up system
02h alarm will power up system
----------1A0A-------------------------------
INT 1A - TIME - READ SYSTEM-TIMER DAY COUNTER (XT2,PS)
AH = 0Ah
Return: CF set on error
CF clear if successful
CX = count of days since Jan 1,1980
SeeAlso: AH=04h,AH=0Bh
----------1A0B-------------------------------
INT 1A - TIME - SET SYSTEM-TIMER DAY COUNTER (XT2,PS)
AH = 0Bh
CX = count of days since Jan 1,1980
Return: CF set on error
CF clear if successful
SeeAlso: AH=05h,AH=0Ah
----------1A10-------------------------------
INT 1A - NEC PC-9800 series - PRINTER - INITIALIZE
AH = 10h
???
Return: ???
SeeAlso: AH=11h,AH=12h,INT 17/AH=01h
----------1A11-------------------------------
INT 1A - NEC PC-9800 series - PRINTER - OUTPUT CHARACTER
AH = 11h
???
Return: ???
SeeAlso: AH=10h,AH=12h,INT 17/AH=00h
----------1A12-------------------------------
INT 1A - NEC PC-9800 series - PRINTER - SENSE STATUS
AH = 12h
???
Return: ???
SeeAlso: AH=10h,AH=11h,INT 17/AH=02h
----------1A3601-----------------------------
INT 1A - WORD PERFECT v5.0 Third Party Interface - INSTALLATION CHECK
AX = 3601h
Return: DS:SI = routine to monitor keyboard input, immediately preceded by the
ASCIZ string "WPCORP\0"
Notes: WordPerfect 5.0 will call this interrupt at start up to determine if a
third party product wants to interface with it. The third party
product must intercept this interrupt and return the address of a
keyboard monitor routine.
Before checking for keyboard input, and after every key entered by the
user, Word Perfect will call the routine whose address was provided
in DS:SI with the following parameters:
Entry: AX = key code or 0
BX = WordPerfect state flag
Exit: AX = 0 or key code
BX = 0 or segment address of buffer with key codes
See the "WordPerfect 5.0 Developer's Toolkit" for further information.
SeeAlso: INT 16/AX=5500h
----------1A6108-----------------------------
INT 1A - SNAP.EXE 3.2+ - "SNAP_SENDWITHREPLY" - SEND MSG AND GET REPLY
AX = 6108h
STACK: WORD conversation ID (0000h-0009h)
DWORD pointer to message buffer
WORD length of message
DWORD pointer to reply buffer
WORD length of reply buffer
WORD 0000h (use default "Cparams" structure)
Return: AX = status (see below)
STACK unchanged
Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
which implements the Simple Network Application Protocol
SeeAlso: AX=6205h
Values for status:
0000h successful
F830h "SNAP_ABORTED"
FC04h "SNAP_SERVERDIED"
FC05h "SNAP_RESEND"
FC06h "SNAP_SELECTFAILED"
FC07h "SNAP_WRONGVERSION"
FC08h "SNAP_INVALIDACK"
FC09h "SNAP_TIMEOUT"
FC0Ah "SNAP_SERVERREJECT"
FC0Bh "SNAP_NOREPLYDUE"
FC0Ch "SNAP_NOAUTHENTICATE"/"SNAP_GUARDIAN_ERROR"
FC0Dh "SNAP_NOINIT"
FC0Eh "SNAP_SOCKETERROR"
FC0Fh "SNAP_BUFFERLIMIT"
FC10h "SNAP_INVALIDCID"
FC11h "SNAP_INVALIDOP"
FC12h "SNAP_XMITFAIL"
FC13h "SNAP_NOMORERETRIES"
FC14h "SNAP_BADPARMS"
FC15h "SNAP_NOMEMORY"
FC16h "SNAP_NOMORECONVS"
FFFFh failed (invalid function/parameter)
----------1A6205-----------------------------
INT 1A - SNAP.EXE 3.2+ - "SNAP_SENDNOREPLY" - SEND MSG, DON'T AWAIT REPLY
AX = 6205h
STACK: WORD conversation ID (0000h-0009h)
DWORD pointer to message
WORD length of message
WORD 0000h (use default "Cparms" structure)
Return: AX = status (see AX=6108h)
STACK unchanged
SeeAlso: AX=6108h
----------1A6308-----------------------------
INT 1A - SNAP.EXE 3.2+ - "SNAP_BEGINCONV" - BEGIN CONVERSATION
AX = 6308h
STACK: WORD offset of ASCIZ "guardian"
WORD offset of ASCIZ hostname
WORD offset of ASCIZ server name
WORD offset of ASCIZ userid
WORD offset of ASCIZ password
WORD offset of password length
WORD offset of password type
WORD offset of "Cparms" structure (see below)
Return: ???
STACK unchanged
Note: all stacked offsets are within the SNAP data segment (use AX=6A01h
to allocate a buffer)
SeeAlso: AX=6405h,AX=7202h
Format of Cparms structure:
Offset Size Description
00h WORD retry delay in seconds
02h WORD timeout delay in seconds
04h WORD maximum buffer size
06h WORD encryption level
----------1A6405-----------------------------
INT 1A - SNAP.EXE 3.2+ - "SNAP_ENDCONV" - END CONVERSATION
AX = 6405h
STACK: WORD conversation ID (0000h-0009h)
DWORD pointer to message buffer
WORD length of message
WORD 0000h (use default "Cparms" structure)
Return: AX = status (see AX=6108h)
STACK unchanged
Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
which implements the Simple Network Application Protocol
SeeAlso: AX=6308h
----------1A6900-----------------------------
INT 1A - SNAP.EXE 3.2+ - "SNAP_DATASEG" - GET RESIDENT DATA SEGMENT
AX = 6900h
Return: AX = value used for DS by resident code
SeeAlso: AX=6A01h,AX=6F01h
----------1A6A01-----------------------------
INT 1A - SNAP.EXE 3.2+ - "SNAP_ALLOC" - ALLOCATE BUFFER IN SNAP DATA SEGMENT
AX = 6A01h
STACK: WORD number of bytes to allocate
Return: AX = offset of allocated buffer or 0000h if out of memory
STACK unchanged
Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
which implements the Simple Network Application Protocol
SeeAlso: AX=6B01h
----------1A6B01-----------------------------
INT 1A - SNAP.EXE 3.2+ - "SNAP_FREE" - DEALLOCATE BUFFER IN SNAP DATA SEGMENT
AX = 6B01h
STACK: WORD offset within SNAP data segment of previously allocated
buffer
Return: STACK unchanged
Note: this call is a NOP if the specified offset is 0000h
SeeAlso: AX=6A01h
----------1A6C04-----------------------------
INT 1A - SNAP.EXE 3.2+ - "SNAP_COPYTO" - COPY DATA TO RESIDENT SNAP PACKAGE
AX = 6C04h
STACK: WORD offset within SNAP data segment of dest (nonzero)
WORD segment of source buffer
WORD offset of source buffer
WORD number of bytes to copy
Return: AX = offset of byte after last one copied to destination
STACK unchanged
Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
which implements the Simple Network Application Protocol
SeeAlso: AX=6D04h
----------1A6D04-----------------------------
INT 1A - SNAP.EXE 3.2+ - "SNAP_COPYFROM" - COPY DATA FROM RESIDENT SNAP PACKAGE
AX = 6D04h
STACK: WORD offset within SNAP data segment of source buffer
WORD segment of destination buffer
WORD offset of destination buffer
WORD number of bytes to copy
Return: AX = offset of byte after last one copied from source
buffer filled
STACK unchanged
SeeAlso: AX=6C04h
----------1A6E01-----------------------------
INT 1A - SNAP.EXE 3.2+ - "SNAP_SETDEBUG" - SET ???
AX = 6E01h
STACK: WORD new value for ???
Return: AX = old value of ???
STACK unchanged
Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
which implements the Simple Network Application Protocol
----------1A6F01-----------------------------
INT 1A - SNAP.EXE 3.2+ - "SNAP_CHKINSTALL" - INSTALLATION CHECK
AX = 6F01h
STACK: WORD 0000h
Return: AX = status
0000h SNAP is resident
other SNAP not present
STACK unchanged
Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
which implements the Simple Network Application Protocol, and is
required by PCVENUS (a network shell). The combination of SNAP and
PCVENUS allows the use of the Andrew File System as one or more
networked drives.
SeeAlso: AX=6900h,AX=7400h
----------1A7002-----------------------------
INT 1A - SNAP.EXE 3.2+ - "SNAP_SETANCHOR"
AX = 7002h
STACK: WORD anchor number (0000h-0009h)
WORD new value for the anchor
Return: AX = status
0000h successful
FFFFh failed (top word on stack not in range 00h-09h)
STACK unchanged
SeeAlso: AX=7101h
----------1A7101-----------------------------
INT 1A - SNAP.EXE 3.2+ - "SNAP_GETANCHOR"
AX = 7101h
STACK: WORD anchor number (0000h-0009h)
Return: AX = anchor's value
STACK unchanged
Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
which implements the Simple Network Application Protocol
SeeAlso: AX=7002h
----------1A7202-----------------------------
INT 1A - SNAP.EXE 3.2+ - "SNAP_SETCONVPARMS" - SET CONVERSATION PARAMETERS
AX = 7202h
STACK: WORD conversation ID (0000h-0009h)
WORD offset within resident data segment of "Cparms"
structure (see AX=6308h)
Return: AX = status???
STACK unchanged
SeeAlso: AX=6308h
----------1A7302-----------------------------
INT 1A - SNAP.EXE 3.2+ - "SNAP_CLIENTVERSION" - ???
AX = 7302h
STACK: WORD conversation ID (0000h-0009h)
WORD offset within resident data segment of ???
Return: AX = ???
???
STACK unchanged
SeeAlso: AX=7400h
----------1A7400-----------------------------
INT 1A - SNAP.EXE 3.2+ - "SNAP_VERSION" - GET VERSION
AX = 7400h
Return: AX = version (AH=major, AL=minor)
Note: this call is only valid if SNAP is installed
SeeAlso: AX=7302h,INT 1A/AX=6F01h
----------1A75-------------------------------
INT 1A - SNAP.EXE 3.2+ - "SNAP_NOP" - ???
AH = 75h
AL = ???
Return: AX = ??? (0000h)
Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
which implements the Simple Network Application Protocol
----------1A76-------------------------------
INT 1A - SNAP.EXE 3.2+ - "SNAP_802_5" - ???
AH = 76h
AL = ???
Return: AX = ???
----------1A77-------------------------------
INT 1A - SNAP.EXE 3.4 - ???
AH = 77h
AL = ??? (at least 01h)
STACK: WORD ???
???
Return: ???
STACK unchanged
----------1A7802-----------------------------
INT 1A - SNAP.EXE 3.4 - ???
AX = 7802h
STACK: WORD ???
WORD ???
Return: ???
STACK unchanged
Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
which implements the Simple Network Application Protocol
----------1A7F-------------------------------
INT 1A - Tandy 2500, Tandy 1000L series - DIGITAL SOUND???
AH = 7Fh
???
Return: ???
SeeAlso: AH=80h,AH=83h,AH=85h
----------1A80-------------------------------
INT 1A - PCjr - SET UP SOUND MULTIPLEXOR
AH = 80h
AL = 00h source is 8253 channel 2
01h source is cassette input
02h source is I/O channel "Audio IN"
03h source is sound generator chip
SeeAlso: AH=7Fh,AH=83h
----------1A8100-----------------------------
INT 1A - Tandy 2500, Tandy 1000L series - DIGITAL SOUND - INSTALLATION CHECK
AX = 8100h
Return: AH > 80h if supported
----------1A83-------------------------------
INT 1A - Tandy 2500, Tandy 1000L series - START PLAYING DIGITAL SOUND
AH = 83h
AL = volume (0=lowest, 7=highest)
CX = number of bytes to play
DX = time between sound samples (multiples of 273 nanoseconds)
ES:BX -> sound data (array of 8-bit PCM samples)
Return: ???
Notes: this call returns immediately while the sound plays in the
background
The sound data pointed to by ES:BX probably shouldn't cross a 64k
boundary. The BIOS appears to call INT 15/AX=91FBh when the sound
device underflows to allow another INT 1A/AH=83h for seamless
playing of long sounds.
SeeAlso: AH=84h,INT 15/AH=91h
----------1A84-------------------------------
INT 1A - Tandy 2500, Tandy 1000L series - STOP PLAYING DIGITAL SOUND
AH = 84h
Return: ???
SeeAlso: AH=83h,AH=85h
----------1A85-------------------------------
INT 1A - Tandy 2500, Tandy 1000L series - DIGITAL SOUND???
AH = 85h
???
Return: ???
SeeAlso: AH=7Fh,AH=83h
----------1AA0-------------------------------
INT 1A - Disk Spool II v2.07 - INSTALLATION CHECK
AH = A0h
Return: AH = B0h if installed
AL = pending INT 1A/AH=D0h subfunction if nonzero???
ES = code segment
ES:BX -> name of current spool file
ES:SI -> current despool file
CL = 00h despooler is disabled
= 41h despooler is enabled
CH = 00h spooler is disabled
= 41h spooler is enabled
DL = 00h despooler is currently active printing a file
= 41h despooler is standing by
DH = 00h ???
= 41h ???
DI = 0000h ???
0001h ???
Note: Disk Spool II is a shareware disk-based print spooler by Budget
Software Company
SeeAlso: AH=ABh,AH=C0h,AH=D0h
----------1AAB-------------------------------
INT 1A - Disk Spool II v1.83 - INSTALLATION CHECK
AH = ABh
Return: AH = BAh if installed
AL = pending INT 1A/AH=ADh subfunction if nonzero???
ES = code segment
ES:BX -> name of current spool file
ES:SI -> current despool file
CL = 00h despooler is disabled
= 41h despooler is enabled
CH = 00h spooler is disabled
= 41h spooler is enabled
DL = 00h despooler is currently active printing a file
= 41h despooler is standing by
DH = 00h ???
= 41h ???
DI = 0000h ???
0001h ???
Note: Disk Spool II is a shareware disk-based print spooler by Budget
Software Company
SeeAlso: AH=A0h,AH=ACh,AH=ADh
----------1AAC-------------------------------
INT 1A - Disk Spool II v1.83 - INSTALLATION CHECK
AH = ACh
Return: (see AH=ABh)
Note: this function is identical to AH=ABh
SeeAlso: AH=A0h,AH=ABh,AH=ADh
----------1AAD-------------------------------
INT 1A - Disk Spool II v1.83 - FUNCTION CALLS
AH = ADh
AL = function code
02h enable spooler only
03h enable the despooler
04h disable the despooler
08h inhibit popup menu
09h enable popup menu
0Ah ???
0Bh disable the spooler
0Ch start despooler after last successfully printed document???
0Dh start despooler at the exact point where it last left off???
0Eh pop up the menu
0Fh ???
11h ???
14h ???
15h ???
16h ???
17h ???
18h ???
19h ???
20h clear file pointed to by the despooler???
21h ???
22h ???
23h ???
30h ???
Return: AH = 00h if successful
SeeAlso: AH=ABh
----------1AC0-------------------------------
INT 1A - Disk Spool II v2.07 - ALTERNATE INSTALLATION CHECK
AH = C0h
Return: (see AH=A0h)
Note: this call is identical to AH=A0h
SeeAlso: AH=A0h,AH=ABh,AH=D0h
----------1AD0-------------------------------
INT 1A - Disk Spool II v2.07 - FUNCTION CALLS
AH = D0h
AL = function code
01h enable spooler and despooler
02h enable spooler only
03h enable despooler at beginning of file
04h disable the despooler
05h disable the despooler and spooler
06h clear the spool file
08h inhibit the popup menu
09h enable the popup menu
0Ah ??? (called by Disk Spool's INT 21 handler)
0Bh disable the spooler
0Ch start despooler after last successfully printed document
0Dh start despooler at the exact point where it last left off
0Eh pop up the menu
0Fh ???
11h start new spool file??? (called by Disk Spool's INT 21 handler
when a program terminates)
14h ???
15h delete despool file and reset ???
16h ??? (writes something to unknown file)
17h ??? (writes something to despool file, then reads something
else and ???)
18h ??? (reads something from despool file, and then ???)
19h ??? (creates/truncates spool file)
20h clear file pointed to by the despooler
21h ??? (writes something to unknown file)
22h ??? (writes something to spool file if spooler/despooler using
same file)
23h ??? (opens/creates unknown file, then ???)
30h ???
31h ???
32h beep
33h append CRLF to spool file???
34h ???
35h ???
36h ???
37h append CRLF to spool file and start a new spool file???
38h ???
51h ??? (called by Disk Spool's INT 21 handler)
52h ??? (called by Disk Spool's INT 21 handler)
57h ???
SeeAlso: AH=A0h,AH=ADh
----------1AF7-------------------------------
INT 1A - RighTime v1.1 - TEMPORARILY DISABLE
AH = F7h
Notes: RighTime is a TSR by G.T. Becker which continuously adjusts the system
time to correct for clock drift
any AH value from F0h-F7h or F9h-FEh will perform this function in
version 1.1, but F7h is the function called by transient portion
SeeAlso: AH=F8h,AH=FFh"RighTime"
----------1AF8-------------------------------
INT 1A - RighTime v1.1 - ENABLE
AH = F8h
Notes: RighTime is a TSR by G.T. Becker which continuously adjusts the system
time to correct for clock drift
RighTime is TeSseRact-compatible (see INT 2F/AX=5453h) and modifies its
TeSseRact program identifier based on its current state: "RighTime"
when enabled, "RighTim"F7h when disabled.
SeeAlso: AH=F7h,AH=FFh"RighTime"
----------1AFE-------------------------------
INT 1A - AT&T 6300 - READ TIME AND DATE
AH = FEh
Return: BX = day count (0 = Jan 1, 1984)
CH = hour
CL = minute
DH = second
DL = hundredths
SeeAlso: AH=FFh"AT&T",INT 21/AH=2Ah,INT 21/AH=2Ch
----------1AFF-------------------------------
INT 1A - AT&T 6300 - SET TIME AND DATE
AH = FFh
BX = day count (0 = Jan 1, 1984)
CH = hour
CL = minute
DH = second
DL = hundredths
Return: ???
SeeAlso: AH=FEh,INT 21/AH=2Bh,INT 21/AH=2Dh
----------1AFF-------------------------------
INT 1A - RighTime v1.1 - PERMANENTLY DISABLE
AH = FFh
Notes: RighTime is a TSR by G.T. Becker which continuously adjusts the system
time to correct for clock drift
upon being permanently disabled, RighTime closes the file handle
referencing its executable (which is updated with time correction
information every two minutes while RighTime is enabled).
----------1B---------------------------------
INT 1B C - KEYBOARD - CONTROL-BREAK HANDLER
Desc: this interrupt is automatically called when INT 09 determines that
Control-Break has been pressed
Note: normally points to a short routine in DOS which sets the Ctrl-C flag,
thus invoking INT 23h the next time DOS checks for Ctrl-C.
SeeAlso: INT 23
----------1C---------------------------------
INT 1C - TIME - SYSTEM TIMER TICK
Desc: this interrupt is automatically called on each clock tick by the INT 08
handler
Notes: this is the preferred interrupt to chain when a program needs to be
invoked regularly
not available on NEC 9800-series PCs
SeeAlso: INT 08
----------1D---------------------------------
INT 1D - SYSTEM DATA - VIDEO PARAMETER TABLES
Note: default parameter table at F000h:F0A4h for 100% compatible BIOSes
SeeAlso: INT 10/AH=00h
Format of video parameters:
Offset Size Description
00h 16 BYTEs 6845 register values for modes 00h and 01h
10h 16 BYTEs 6845 register values for modes 02h and 03h
20h 16 BYTEs 6845 register values for modes 04h and 05h
30h 16 BYTEs 6845 register values for modes 06h and 07h
40h WORD bytes in video buffer for modes 00h and 01h
42h WORD bytes in video buffer for modes 02h and 03h
44h WORD bytes in video buffer for modes 04h and 05h
46h WORD bytes in video buffer for modes 06h and 07h
48h 8 BYTEs columns on screen for each of modes 00h through 07h
50h 8 BYTEs CRT controller mode bytes for each of modes 00h through 07h
----------1E---------------------------------
INT 1E - SYSTEM DATA - DISKETTE PARAMETERS
Note: default parameter table at F000h:EFC7h for 100% compatible BIOSes
SeeAlso: INT 13/AH=0Fh,INT 41
Format of diskette parameter table:
Offset Size Description
00h BYTE first specify byte
bits 7-4: step rate
3-0: head unload time (0Fh = 240 ms)
01h BYTE second specify byte
bits 7-1: head load time (01h = 4 ms)
0: non-DMA mode (always 0)
02h BYTE delay until motor turned off (in clock ticks)
03h BYTE bytes per sector (00h = 128, 01h = 256, 02h = 512, 03h = 1024)
04h BYTE sectors per track
05h BYTE length of gap between sectors (2Ah for 5.25", 1Bh for 3.5")
06h BYTE data length (ignored if bytes-per-sector field nonzero)
07h BYTE gap length when formatting (50h for 5.25", 6Ch for 3.5")
08h BYTE format filler byte (default F6h)
09h BYTE head settle time in milliseconds
0Ah BYTE motor start time in 1/8 seconds
----------1F---------------------------------
INT 1F - SYSTEM DATA - 8x8 GRAPHICS FONT
points at 1024 bytes of graphics data, 8 bytes for each character 80h-FFh
Note: graphics data for characters 00h-7Fh stored at F000h:FA6Eh in 100%
compatible BIOSes
SeeAlso: INT 10/AX=5000h,INT 43
---------------------------------------------
Interrupt List, part 3 of 8
This compilation is Copyright (c) 1989,1990,1991,1992,1993 Ralf Brown
----------20---------------------------------
INT 20 - Minix - SEND/RECEIVE MESSAGE
AX = process ID of other process
BX -> message
CX = 1 send
2 receive
3 send&receive
Note: the message contains the system call number (numbered as in V7
Unix(tm)) and the call parameters
----------20---------------------------------
INT 20 - DOS 1+ - TERMINATE PROGRAM
CS = PSP segment
Return: never
Note: (see INT 21/AH=00h)
SeeAlso: INT 21/AH=00h,INT 21/AH=4Ch
---------------------------------------------
INT 20 - COMTROL HOSTESS i/ISA DEBUGGER - INVOKE FIRMWARE DEBUGGER
???
Return: ???
SeeAlso: INT 21"COMTROL HOSTESS"
---------------------------------------------
INT 21 - COMTROL HOSTESS i/ISA DEBUGGER - GET SEGMENT FOR CONTROL PROGRAM USE
???
Return: AX = first segment available for control program use
SeeAlso: INT 20"COMTROL HOSTESS",INT 22"COMTROL HOSTESS"
----------2100-------------------------------
INT 21 - DOS 1+ - TERMINATE PROGRAM
AH = 00h
CS = PSP segment
Notes: Microsoft recomments using INT 21/AH=4Ch for DOS 2+
execution continues at address stored in INT 22 after DOS performs
whatever cleanup it needs to do
if the PSP is its own parent, the process's memory is not freed; if
INT 22 additionally points into the terminating program, the
process is effectively NOT terminated
not supported by MS Windows 3.0 DOSX.EXE DOS extender
SeeAlso: AH=26h,AH=31h,AH=4Ch,INT 20,INT 22
----------2101-------------------------------
INT 21 - DOS 1+ - READ CHARACTER FROM STANDARD INPUT, WITH ECHO
AH = 01h
Return: AL = character read
Notes: ^C/^Break are checked, and INT 23 executed if read
character is echoed to standard output
standard input is always the keyboard and standard output the screen
under DOS 1.x, but they may be redirected under DOS 2+
SeeAlso: AH=06h,AH=07h,AH=08h,AH=0Ah
----------2102-------------------------------
INT 21 - DOS 1+ - WRITE CHARACTER TO STANDARD OUTPUT
AH = 02h
DL = character to write
Return: AL = last character output (despite the official docs which state
nothing is returned) (at least DOS 3.3-5.0)
Notes: ^C/^Break are checked, and INT 23 executed if pressed
standard output is always the screen under DOS 1.x, but may be
redirected under DOS 2+
the last character output will be the character in DL unless DL=09h
on entry, in which case AL=20h as tabs are expanded to blanks
SeeAlso: AH=06h,AH=09h
----------2103-------------------------------
INT 21 - DOS 1+ - READ CHARACTER FROM STDAUX
AH = 03h
Return: AL = character read
Notes: keyboard checked for ^C/^Break, and INT 23 executed if detected
STDAUX is usually the first serial port
SeeAlso: AH=04h,INT 14/AH=02h,INT E0/CL=03h
----------2104-------------------------------
INT 21 - DOS 1+ - WRITE CHARACTER TO STDAUX
AH = 04h
DL = character to write
Notes: keyboard checked for ^C/^Break, and INT 23 executed if detected
STDAUX is usually the first serial port
if STDAUX is busy, this function will wait until it becomes free
SeeAlso: AH=03h,INT 14/AH=01h,INT E0/CL=04h
----------2105-------------------------------
INT 21 - DOS 1+ - WRITE CHARACTER TO PRINTER
AH = 05h
DL = character to print
Notes: keyboard checked for ^C/^Break, and INT 23 executed if detected
STDPRN is usually the first parallel port, but may be redirected under
DOS 2+
if the printer is busy, this function will wait
SeeAlso: INT 17/AH=00h
----------2106-------------------------------
INT 21 - DOS 1+ - DIRECT CONSOLE OUTPUT
AH = 06h
DL = character (except FFh)
Return: AL = character output (despite official docs which state nothing is
returned) (at least DOS 3.3-5.0)
Notes: does not check ^C/^Break
writes to standard output, which is always the screen under DOS 1.x,
but may be redirected under DOS 2+
SeeAlso: AH=02h,AH=09h
----------2106--DLFF-------------------------
INT 21 - DOS 1+ - DIRECT CONSOLE INPUT
AH = 06h
DL = FFh
Return: ZF set if no character available
ZF clear if character available
AL = character read
Notes: ^C/^Break are NOT checked
if the returned character is 00h, the user pressed a key with an
extended keycode, which will be returned by the next call of this
function
reads from standard input, which is always the keyboard under DOS 1.x,
but may be redirected under DOS 2+
SeeAlso: AH=0Bh
----------2107-------------------------------
INT 21 - DOS 1+ - DIRECT CHARACTER INPUT, WITHOUT ECHO
AH = 07h
Return: AL = character read from standard input
Notes: does not check ^C/^Break
standard input is always the keyboard under DOS 1.x, but may be
redirected under DOS 2+
if the interim console flag is set (see AX=6301h), partially-formed
double-byte characters may be returned
SeeAlso: AH=01h,AH=06h,AH=08h,AH=0Ah
----------2108-------------------------------
INT 21 - DOS 1+ - CHARACTER INPUT WITHOUT ECHO
AH = 08h
Return: AL = character read from standard input
Notes: ^C/^Break are checked, and INT 23 executed if detected
standard input is always the keyboard under DOS 1.x, but may be
redirected under DOS 2+
if the interim console flag is set (see AX=6301h), partially-formed
double-byte characters may be returned
SeeAlso: AH=01h,AH=06h,AH=07h,AH=0Ah,AH=64h
----------2109-------------------------------
INT 21 - DOS 1+ - WRITE STRING TO STANDARD OUTPUT
AH = 09h
DS:DX -> '$'-terminated string
Return: AL = 24h (the '$' terminating the string, despite official docs which
state that nothing is returned) (at least DOS 3.3-5.0)
Notes: ^C/^Break are checked, and INT 23 is called if either pressed
standard output is always the screen under DOS 1.x, but may be
redirected under DOS 2+
under the FlashTek X-32 DOS extender, the pointer is in DS:EDX
SeeAlso: AH=02h,AH=06h"OUTPUT"
----------210A-------------------------------
INT 21 - DOS 1+ - BUFFERED INPUT
AH = 0Ah
DS:DX -> buffer (see below)
Return: buffer filled with user input
Notes: ^C/^Break are checked, and INT 23 is called if either detected
reads from standard input, which may be redirected under DOS 2+
if the maximum buffer size (see below) is set to 00h, this call returns
immediately without reading any input
SeeAlso: AH=0Ch,INT 2F/AX=4810h
Format of input buffer:
Offset Size Description
00h BYTE maximum characters buffer can hold
01h BYTE (input) number of chars from last input which may be recalled
(return) number of characters actually read, excluding CR
02h N BYTEs actual characters read, including the final carriage return
----------210A00-----------------------------
INT 21 - WCED v1.6 - INSTALLATION CHECK
AX = 0A00h
DS:DX -> 6-byte buffer whose first two bytes must be 00h
Return: buffer offset 02h-05h filled with "Wced" if installed
Note: WCED is a free command-line editor and history utility by Stuart
Russell
SeeAlso: AH=FFh"CED"
----------210B-------------------------------
INT 21 - DOS 1+ - GET STDIN STATUS
AH = 0Bh
Return: AL = 00h if no character available
= FFh if character is available
Notes: ^C/^Break are checked, and INT 23 is called if either pressed
standard input is always the keyboard under DOS 1.x, but may be
redirected under DOS 2+
if the interim console flag is set (see AX=6301h), this function
returns AL=FFh if a partially-formed double-byte character is
available
SeeAlso: AH=06h"INPUT",AX=4406h
----------210B56-----------------------------
INT 21 - VIRUS - "Perfume" - INSTALLATION CHECK
AX = 0B56h
Return: AX = 4952h if resident
SeeAlso: AX=0D20h
----------210C-------------------------------
INT 21 - DOS 1+ - FLUSH BUFFER AND READ STANDARD INPUT
AH = 0Ch
AL = STDIN input function to execute after flushing buffer
other registers as appropriate for the input function
Return: as appropriate for the specified input function
Note: if AL is not one of 01h,06h,07h,08h, or 0Ah, the buffer is flushed but
no input is attempted
SeeAlso: AH=01h,AH=06h"INPUT",AH=07h,AH=08h,AH=0Ah
----------210D-------------------------------
INT 21 - DOS 1+ - DISK RESET
AH = 0Dh
Notes: writes all modified disk buffers to disk, but does not update directory
information (that is only done when files are closed or a SYNC call
is issued)
SeeAlso: AX=5D01h,INT 13/AH=00h,INT 2F/AX=1120h
----------210D20-----------------------------
INT 21 - VIRUS - "Crazy Imp" - INSTALLATION CHECK
AX = 0D20h
Return: AX = 1971h if resident
SeeAlso: AX=0B56h,AH=30h/DX=ABCDh
----------210E-------------------------------
INT 21 - DOS 1+ - SELECT DEFAULT DRIVE
AH = 0Eh
DL = new default drive (00h = A:, 01h = B:, etc)
Return: AL = number of potentially valid drive letters
Notes: under Novell NetWare, the return value is always 32, the number of
drives that NetWare supports
under DOS 3+, the return value is the greatest of 5, the value of
LASTDRIVE= in CONFIG.SYS, and the number of drives actually present
on a DOS 1.x/2.x single-floppy system, AL returns 2 since the floppy
may be accessed as either A: or B:
otherwise, the return value is the highest drive actually present
DOS 1.x supports a maximum of 16 drives, 2.x a maximum of 63 drives,
and 3+ a maximum of 26 drives
SeeAlso: AH=19h,AH=3Bh,AH=DBh
----------210F-------------------------------
INT 21 - DOS 1+ - OPEN FILE USING FCB
AH = 0Fh
DS:DX -> unopened File Control Block (see below)
Return: AL = status
00h successful
FFh file not found or access denied
Notes: (DOS 3.1+) file opened for read/write in compatibility mode
an unopened FCB has the drive, filename, and extension fields filled
in and all other bytes cleared
not supported by MS Windows 3.0 DOSX.EXE DOS extender
SeeAlso: AH=10h,AH=16h,AH=3Dh
Format of File Control Block:
Offset Size Description
-7 BYTE extended FCB if FFh
-6 5 BYTEs reserved
-1 BYTE file attribute if extended FCB
00h BYTE drive number (0 = default, 1 = A, etc)
01h 8 BYTEs blank-padded file name
09h 3 BYTEs blank-padded file extension
0Ch WORD current block number
0Eh WORD logical record size
10h DWORD file size
14h WORD date of last write (see AX=5700h)
16h WORD time of last write (see AX=5700h) (DOS 1.1+)
18h 8 BYTEs reserved (see below)
20h BYTE record within current block
21h DWORD random access record number (if record size is > 64 bytes, high
byte is omitted)
Note: to use an extended FCB, you must specify the address of the FFh flag at
offset -7, rather than the address of the drive number field
Format of reserved field for DOS 1.0:
Offset Size Description
16h WORD location in directory (if high byte = FFh, low byte is device
ID)
18h WORD number of first cluster in file
1Ah WORD current absolute cluster number on disk
1Ch WORD current relative cluster number within file
(0 = first cluster of file, 1 = second cluster, etc.)
1Eh BYTE dirty flag (00h = not dirty)
1Fh BYTE unused
Format of reserved field for DOS 1.10-1.25:
Offset Size Description
18h BYTE bit 7: set if logical device
bit 6: not dirty
bits 5-0: disk number or logical device ID
19h WORD starting cluster number on disk
1Bh WORD current absolute cluster number on disk
1Dh WORD current relative cluster number within file
1Fh BYTE unused
Format of reserved field for DOS 2.x:
Offset Size Description
18h BYTE bit 7: set if logical device
bit 6: set if open???
bits 5-0: ???
19h WORD starting cluster number on disk
1Bh WORD ???
1Dh BYTE ???
1Eh BYTE ???
1Fh BYTE ???
Format of reserved field for DOS 3.x:
Offset Size Description
18h BYTE number of system file table entry for file
19h BYTE attributes
bits 7,6: 00 = SHARE.EXE not loaded, disk file
01 = SHARE.EXE not loaded, character device
10 = SHARE.EXE loaded, remote file
11 = SHARE.EXE loaded, local file
bits 5-0: low six bits of device attribute word
---SHARE.EXE loaded, local file (DOS 3.x and 5.0)---
1Ah WORD starting cluster of file on disk
1Ch WORD (DOS 3.x) offset within SHARE of sharing record (see AH=52h)
(DOS 5.0) unique sequence number of sharing record
1Eh BYTE file attribute
1Fh BYTE ???
---SHARE.EXE loaded, remote file---
1Ah WORD number of sector containing directory entry
1Ch WORD relative cluster within file of last cluster accessed
1Eh BYTE absolute cluster number of last cluster accessed
1Fh BYTE ???
---SHARE.EXE not loaded---
1Ah BYTE (low byte of device attribute word AND 0Ch) OR open mode
1Bh WORD starting cluster of file
1Dh WORD number of sector containing directory entry
1Fh BYTE number of directory entry within sector
Note: if FCB opened on character device, DWORD at 1Ah is set to the address
of the device driver header, then the BYTE at 1Ah is overwritten.
----------2110-------------------------------
INT 21 - DOS 1+ - CLOSE FILE USING FCB
AH = 10h
DS:DX -> File Control Block (see AH=0Fh)
Return: AL = status
00h successful
FFh failed
Notes: a successful close forces all disk buffers used by the file to be
written and the directory entry to be updated
not supported by MS Windows 3.0 DOSX.EXE DOS extender
SeeAlso: AH=0Fh,AH=16h,AH=3Eh
----------2111-------------------------------
INT 21 - DOS 1+ - FIND FIRST MATCHING FILE USING FCB
AH = 11h
DS:DX -> unopened FCB (see AH=0Fh), may contain '?' wildcards
Return: AL = status
00h successful
[DTA] unopened FCB for first matching file
FFh no matching filename, or bad FCB
Notes: the type of the returned FCB depends on whether the input FCB was a
normal or an extended FCB
for extended FCBs with search attribute 08h, the volume label (if any)
will be returned even if the current directory is not the root dir.
DOS 3+ also allows the '*' wildcard
the search FCB must not be modified if AH=12h will be used to continue
searching; DOS 3.3 has set the following parts of the FCB:
0Ch BYTE ???
0Dh WORD directory entry number of matching file
0Fh WORD cluster number of current directory
11h 4 BYTEs ???
15h BYTE drive number (1=A:)
at least for DOS 3.3, the unopened FCB in the DTA is actually the drive
number followed by the file's directory entry
SeeAlso: AH=12h,AH=1Ah,AH=4Eh,INT 2F/AX=111Bh
----------2112-------------------------------
INT 21 - DOS 1+ - FIND NEXT MATCHING FILE USING FCB
AH = 12h
DS:DX -> unopened FCB (see AH=0Fh)
Return: AL = status
00h successful
[DTA] = unopened FCB
FFh no more matching filenames
Note: (see AH=11h)
assumes that successful FindFirst executed on search FCB before call
SeeAlso: AH=1Ah,AH=4Fh,INT 2F/AX=111Ch
----------2113-------------------------------
INT 21 - DOS 1+ - DELETE FILE USING FCB
AH = 13h
DS:DX -> unopened FCB (see AH=0Fh), filename filled with template for
deletion ('?' wildcards allowed)
Return: AL = status
00h one or more files successfully deleted
FFh no matching files or all were read-only or locked
Notes: DOS 1.25+ deletes everything in the current directory (including
subdirectories) and sets the first byte of the name to 00h (entry
never used) instead of E5h if called on an extended FCB with
filename '???????????' and bits 0-4 of the attribute set (bits 1 and
2 for DOS 1.x). This may have originally been an optimization to
minimize directory searching after a mass deletion (DOS 1.25+ stop
the directory search upon encountering a never-used entry), but can
corrupt the filesystem under DOS 2+ because subdirectories are
removed without deleting the files they contain.
currently-open files should not be deleted
SeeAlso: AH=41h,INT 2F/AX=1113h
----------2114-------------------------------
INT 21 - DOS 1+ - SEQUENTIAL READ FROM FCB FILE
AH = 14h
DS:DX -> opened FCB (see AH=0Fh)
Return: AL = status
00h successful
01h end of file (no data)
02h segment wrap in DTA
03h end of file, partial record read
[DTA] = record read from file
Notes: reads a record of the size specified in the FCB beginning at the
current file position, then updates the current block and current
record fields in the FCB
if a partial record was read, it is zero-padded to the full size
not supported by MS Windows 3.0 DOSX.EXE DOS extender
SeeAlso: AH=0Fh,AH=15h,AH=1Ah,AH=3Fh,INT 2F/AX=1108h
----------2115-------------------------------
INT 21 - DOS 1+ - SEQUENTIAL WRITE TO FCB FILE
AH = 15h
DS:DX -> opened FCB (see AH=0Fh)
[DTA] = record to write
Return: AL = status
00h successful
01h disk full
02h segment wrap in DTA
Notes: writes a record of the size specified in the FCB beginning at the
current file position, then updates the current block and current
record fields in the FCB
if less than a full sector is written, the data is placed in a DOS
buffer to be written out at a later time
not supported by MS Windows 3.0 DOSX.EXE DOS extender
SeeAlso: AH=0Fh,AH=14h,AH=1Ah,AH=40h,INT 2F/AX=1109h
----------2116-------------------------------
INT 21 - DOS 1+ - CREATE OR TRUNCATE FILE USING FCB
AH = 16h
DS:DX -> unopened FCB (see AH=0Fh), wildcards not allowed
Return: AL = status
00h successful
FFh directory full or file exists and is read-only or locked
Notes: if file already exists, it is truncated to zero length
if an extended FCB is used, the file is given the attribute in the
FCB; this is how to create a volume label in the disk's root dir
not supported by MS Windows 3.0 DOSX.EXE DOS extender
SeeAlso: AH=0Fh,AH=10h,AH=3Ch
----------2117-------------------------------
INT 21 - DOS 1+ - RENAME FILE USING FCB
AH = 17h
DS:DX -> modified FCB (see also AH=0Fh)
the old filename ('?' wildcards OK) is in the standard location
while the new filename ('?' wildcards OK) is stored in the 11
bytes beginning at offset 11h
Return: AL = status
00h successfully renamed
FFh no matching files,file is read-only, or new name already exists
Note: subdirectories may be renamed using an extended FCB with the
appropriate attribute, as may volume labels
SeeAlso: AH=0Fh,AH=13h,AH=56h,INT 2F/AX=1111h
----------2118-------------------------------
INT 21 - DOS 1+ - NULL FUNCTION FOR CP/M COMPATIBILITY
AH = 18h
Return: AL = 00h
Note: corresponds to the CP/M BDOS function "get bit map of logged drives",
which is meaningless under MSDOS
SeeAlso: AH=1Dh,AH=1Eh,AH=20h,AX=4459h
----------2119-------------------------------
INT 21 - DOS 1+ - GET CURRENT DEFAULT DRIVE
AH = 19h
Return: AL = drive (00h = A:, 01h = B:, etc)
SeeAlo: AH=0Eh,AH=47h
----------211A-------------------------------
INT 21 - DOS 1+ - SET DISK TRANSFER AREA ADDRESS
AH = 1Ah
DS:DX -> Disk Transfer Area (DTA)
Notes: the DTA is set to PSP:0080h when a program is started
under the FlashTek X-32 DOS extender, the pointer is in DS:EDX
SeeAlso: AH=11h,AH=12h,AH=2Fh,AH=4Eh,AH=4Fh
----------211B-------------------------------
INT 21 - DOS 1+ - GET ALLOCATION INFORMATION FOR DEFAULT DRIVE
AH = 1Bh
Return: AL = sectors per cluster (allocation unit)
CX = bytes per sector
DX = total number of clusters
DS:BX -> media ID byte (see below)
Note: under DOS 1.x, DS:BX points at an actual copy of the FAT; later
versions return a pointer to a copy of the FAT's ID byte
SeeAlso: AH=1Ch,AH=36h
Values for media ID byte:
FFh floppy, double-sided, 8 sectors per track (320K)
FEh floppy, single-sided, 8 sectors per track (160K)
FDh floppy, double-sided, 9 sectors per track (360K)
FCh floppy, single-sided, 9 sectors per track (180K)
F9h floppy, double-sided, 15 sectors per track (1.2M)
F8h hard disk
F0h other
----------211C-------------------------------
INT 21 - DOS 1+ - GET ALLOCATION INFORMATION FOR SPECIFIC DRIVE
AH = 1Ch
DL = drive (00h = default, 01h = A:, etc)
Return: AL = sectors per cluster (allocation unit)
CX = bytes per sector
DX = total number of clusters
DS:BX -> media ID byte (see AH=1Bh)
Note: under DOS 1.x, DS:BX points at an actual copy of the FAT; later
versions return a pointer to a copy of the FAT's ID byte
SeeAlso: AH=1Bh,AH=36h
----------211D-------------------------------
INT 21 - DOS 1+ - NULL FUNCTION FOR CP/M COMPATIBILITY
AH = 1Dh
Return: AL = 00h
Note: corresponds to the CP/M BDOS function "get bit map of read-only
drives", which is meaningless under MSDOS
SeeAlso: AH=18h,AH=1Eh,AH=20h,AX=4459h
----------211E-------------------------------
INT 21 - DOS 1+ - NULL FUNCTION FOR CP/M COMPATIBILITY
AH = 1Eh
Return: AL = 00h
Note: corresponds to the CP/M BDOS function "set file attributes" which was
meaningless under MSDOS 1.x
SeeAlso: AH=18h,AH=1Dh,AH=20h
----------211F-------------------------------
INT 21 - DOS 1+ - GET DRIVE PARAMETER BLOCK FOR DEFAULT DRIVE
AH = 1Fh
Return: AL = status
00h successful
DS:BX -> Drive Parameter Block (DPB) (see below for DOS 1.x,
AH=32h for DOS 2+)
FFh invalid drive
Note: this call was undocumented prior to the release of DOS 5.0; however,
only the DOS 4+ version of the DPB has been documented
SeeAlso: AH=32h
Format of DOS 1.1 and MSDOS 1.25 drive parameter block:
Offset Size Description
00h BYTE sequential device ID
01h BYTE logical drive number (0=A:)
02h WORD bytes per sector
04h BYTE highest sector number within a cluster
05h BYTE shift count to convert clusters into sectors
06h WORD starting sector number of first FAT
08h BYTE number of copies of FAT
09h WORD number of directory entries
0Bh WORD number of first data sector
0Dh WORD highest cluster number (number of data clusters + 1)
0Fh BYTE sectors per FAT
10h WORD starting sector of directory
12h WORD address of allocation table
Note: the DOS 1.0 table is the same except that the first and last fields
are missing; see INT 21/AH=32h for the DOS 2+ version
----------2120-------------------------------
INT 21 - DOS 1+ - NULL FUNCTION FOR CP/M COMPATIBILITY
AH = 20h
Return: AL = 00h
Note: corresponds to the CP/M BDOS function "get/set default user
(sublibrary) number", which is meaningless under MSDOS
SeeAlso: AH=18h,AH=1Dh,AH=1Eh,AX=4459h
----------2121-------------------------------
INT 21 - DOS 1+ - READ RANDOM RECORD FROM FCB FILE
AH = 21h
DS:DX -> opened FCB (see AH=0Fh)
Return: AL = status
00h successful
01h end of file, no data read
02h segment wrap in DTA, no data read
03h end of file, partial record read
[DTA] = record read from file
Notes: the record is read from the current file position as specified by the
random record and record size fields of the FCB
the file position is not updated after reading the record
if a partial record is read, it is zero-padded to the full size
not supported by MS Windows 3.0 DOSX.EXE DOS extender
SeeAlso: AH=14h,AH=22h,AH=27h,AH=3Fh
----------2122-------------------------------
INT 21 - DOS 1+ - WRITE RANDOM RECORD TO FCB FILE
AH = 22h
DS:DX -> opened FCB (see AH=0Fh)
[DTA] = record to write
Return: AL = status
00h successful
01h disk full
02h segment wrap in DTA
Notes: the record is written to the current file position as specified by the
random record and record size fields of the FCB
the file position is not updated after writing the record
if the record is located beyond the end of the file, the file is
extended but the intervening data remains uninitialized
if the record only partially fills a disk sector, it is copied to a
DOS disk buffer to be written out to disk at a later time
not supported by MS Windows 3.0 DOSX.EXE DOS extender
SeeAlso: AH=15h,AH=21h,AH=28h,AH=40h
----------2123-------------------------------
INT 21 - DOS 1+ - GET FILE SIZE FOR FCB
AH = 23h
DS:DX -> unopened FCB (see AH=0Fh), wildcards not allowed
Return: AL = status
00h successful (matching file found)
FCB random record field filled with size in records, rounded up
to next full record
FFh failed (no matching file found)
Note: not supported by MS Windows 3.0 DOSX.EXE DOS extender
SeeAlso: AH=42h
----------2124-------------------------------
INT 21 - DOS 1+ - SET RANDOM RECORD NUMBER FOR FCB
AH = 24h
DS:DX -> opened FCB (see AH=0Fh)
Notes: computes the random record number corresponding to the current record
number and record size, then stores the result in the FCB
normally used when switching from sequential to random access
not supported by MS Windows 3.0 DOSX.EXE DOS extender
SeeAlso: AH=21h,AH=27h,AH=42h
----------2125-------------------------------
INT 21 - DOS 1+ - SET INTERRUPT VECTOR
AH = 25h
AL = interrupt number
DS:DX -> new interrupt handler
Notes: this function is preferred over direct modification of the interrupt
vector table
some DOS extenders place an API on this function, as it is not
directly meaningful in protected mode
SeeAlso: AX=2501h,AH=35h
----------212501-----------------------------
INT 21 P - Phar Lap 386/DOS-Extender - RESET DOS EXTENDER DATA STRUCTURES
AX = 2501h
SS = application's original SS or DS (FlashTek X-32VM)
Return: CF clear if successful
CF set on error
caller is operating on X-32 stack (FlashTek X-32VM)
Notes: Phar Lap uses INT 21/AH=25h as the entry point for all 386/DOS-Extender
system calls. Only available when directly using 386/DOS-Extender or
a compatible DOS extender, or when using a product that was created
using 386-DOS/Extender or a compatible
this function is also supported by FlashTek X-32VM
SeeAlso: AH=30h"Phar Lap"
----------212502-----------------------------
INT 21 - Phar Lap 386/DOS-Extender - GET PROTECTED-MODE INTERRUPT VECTOR
AX = 2502h
CL = interrupt number
Return: CF clear
ES:EBX = CS:EIP of protected-mode interrupt handler
Note: this function is also supported by FlashTek X-32VM
SeeAlso: AX=2503h,AX=2504h,INT 31/AX=0204h
----------212503-----------------------------
INT 21 - Phar Lap 386/DOS-Extender - GET REAL-MODE INTERRUPT VECTOR
AX = 2503h
CL = interrupt number
Return: CF clear
EBX = CS:IP of real-mode interrupt handler
Note: this function is also supported by FlashTek X-32VM
SeeAlso: AX=2502h,AX=2504h,AH=35h,INT 31/AX=0200h
----------212504-----------------------------
INT 21 - Phar Lap 386/DOS-Extender - SET PROTECTED-MODE INTERRUPT VECTOR
AX = 2504h
CL = interrupt number
DS:EDX = CS:EIP of protected-mode interrupt handler
Return: CF clear
Note: this function is also supported by FlashTek X-32VM
SeeAlso: AX=2502h,AX=2505h,INT 31/AX=0205h
----------212505-----------------------------
INT 21 - Phar Lap 386/DOS-Extender - SET REAL-MODE INTERRUPT VECTOR
AX = 2505h
CL = interrupt number
EBX = CS:IP of real-mode interrupt handler
Return: CF clear
Note: this function is also supported by FlashTek X-32VM
SeeAlso: AX=2503h,AX=2504h,INT 31/AX=0201h
----------212506-----------------------------
INT 21 - Phar Lap 386/DOS-Extender - SET INT TO ALWAYS GAIN CONTRL IN PROT MODE
AX = 2506h
CL = interrupt number
DS:EDX = CS:EIP of protected-mode interrupt handler
Return: CF clear
Notes: this function modifies both the real-mode low-memory interrupt
vector table and the protected-mode Interrupt Descriptor Table (IDT)
interrupts occurring in real mode are resignaled in protected mode
this function is also supported by FlashTek X-32VM
----------212507-----------------------------
INT 21 - Phar Lap 386/DOS-Extender - SET REAL- & PROTECTED-MODE INT VECTORS
AX = 2507h
CL = interrupt numbern
DS:EDX = CS:EIP of protected-mode interrupt handler
EBX = CS:IP of real-mode interrupt handler
Return: CF clear
Notes: interrupts are disabled until both vectors have been modified
this function is also supported by FlashTek X-32VM
SeeAlso: AX=2504h,AX=2505h
----------212508-----------------------------
INT 21 - Phar Lap 386/DOS-Extender - GET SEGMENT LINEAR BASE ADDRESS
AX = 2508h
BX = segment selector
Return: CF clear if successful
ECX = linear base address of segment
CF set if invalid segment selector
Note: this function is also supported by FlashTek X-32VM
SeeAlso: AX=2509h
----------212509-----------------------------
INT 21 - Phar Lap 386/DOS-Extender - CONVERT LINEAR TO PHYSICAL ADDRESS
AX = 2509h
EBX = linear address to convert
Return: CF clear if successful
ECX = physical address (carry flag clear)
CF set if linear address not mapped in page tables
SeeAlso: AX=2508h
----------212509-----------------------------
INT 21 - FlashTek X-32VM - GET SYSTEM SEGMENTS AND SELECTORS
AX = 2509h
Return: CF clear
EAX high word = default DS
AX = alias for 16-bit data segment
BX = real mode code segment
EDX high word = selector covering full 4GB address space
DX = default SS
ESI high word = PSP selector
SI = environment selector
----------21250A-----------------------------
INT 21 - Phar Lap 386/DOS-Extender - MAP PHYSICAL MEMORY AT END OF SEGMENT
AX = 250Ah
ES = segment selector in the Local Descriptor Table (LDT) of segment
to modify
EBX = physical base address of memory to map (multiple of 4K)
ECX = number of physical 4K pages to map
Return: CF clear if successful
EAX = 32-bit offset in segment of mapped memory
CF set on error
EAX = error code
08h insufficient memory to create page tables
09h invalid segment selector
SeeAlso: INT 31/AX=0800h
----------21250C-----------------------------
INT 21 - Phar Lap 386/DOS-Extender - GET HARDWARE INTERRUPT VECTORS
AX = 250Ch
Return: CF clear
AL = base interrupt vector for IRQ0-IRQ7
AH = base interrupt vector for IRQ8-IRQ15
BL = interrupt vector for BIOS print screen function (Phar Lap only)
Note: this function is also supported by FlashTek X-32VM
SeeAlso: INT 31/AX=0400h,INT 67/AX=DE0Ah
----------21250D-----------------------------
INT 21 - Phar Lap 386/DOS-Extender - GET REAL-MODE LINK INFORMATION
AX = 250Dh
Return: CF clear
EAX = CS:IP of real-mode callback procedure that will call through
from real mode to a protected-mode routine
EBX = 32-bit real-mode address of intermode call data buffer
ECX = size in bytes of intermode call data buffer
ES:EDX = protected-mode address of intermode call data buffer
Notes: this function is also supported by FlashTek X-32VM
X-32VM guarantees the intermode buffer to be at least 4 KB
SeeAlso: AX=250Eh
Call real-mode callback with:
STACK: DWORD offset to protected-mode code
WORD placeholder for protected-mode CS
DWORD pointer to selector structure (see below)
or 0000h:0000h for defaults
var parameters for protected-mode procedure
Return: via FAR return
Format of selector structure:
Offset Size Description
00h WORD protected-mode GS selector
02h WORD protected-mode FS selector
04h WORD protected-mode ES selector
06h WORD protected-mode DS selector
----------21250E-----------------------------
INT 21 - Phar Lap 386/DOS-Extender - CALL REAL-MODE PROCEDURE
AX = 250Eh
EBX = CS:IP of real-mode procedure to call
ECX = number of two-byte words to copy from protected-mode stack
to real-mode stack
Return: CF clear if successful
all segment registers unchanged
all general registers contain values set by real-mode procedure
all other flags set as they were left by real-mode procedure
stack unchanged
CF set on error
EAX = error code
01h not enough real-mode stack space
Note: this function is also supported by FlashTek X-32VM; under X-32VM, the
call will fail if ECX > 0000003Fh
SeeAlso: AX=250Dh,AX=2510h,AH=E1h"OS/286",INT 31/AX=0301h
----------21250F-----------------------------
INT 21 - Phar Lap 386/DOS-Extender - CONVERT PROTECTED-MODE ADDRESS TO MS-DOS
AX = 250Fh
ES:EBX = 48-bit protected-mode address to convert
Return: CF clear if successful (address < 1MB)
ECX = 32-bit real-mode MS-DOS address
CF set on error (address >= 1MB)
ECX = linear address
Note: this function is also supported by FlashTek X-32VM
SeeAlso: AX=2510h
----------212510-----------------------------
INT 21 - Phar Lap 386/DOS-Extender - CALL REAL-MODE PROCEDURE, REGISTERS
AX = 2510h
EBX = CS:IP of real-mode procedure to call
ECX = number of two-byte words to copy to protected-mode stack to
real-mode stack
DS:EDX -> pointer to parameter block (see below)
Return: CF clear if successful
all segment registers unchanged,
EDX unchanged
all other general registers contain values set by real-mode proc
all other flags are set as they were left by real-mode procedure
real-mode register values are returned in the parameter block
CF set on error
EAX = error code
01h not enough real-mode stack space
Note: unlike most of the preceding 25xxh functions, this one is not
supported by FlashTek X-32VM
SeeAlso: AX=250Eh,AX=250Fh
Format of parameter block:
Offset Size Description
00h WORD real-mode DS value
02h WORD real-mode ES value
04h WORD real-mode FS value
06h WORD real-mode GS value
08h DWORD real-mode EAX value
0Ch DWORD real-mode EBX value
10h DWORD real-mode ECX value
14h DWORD real-mode EDX value
----------212511-----------------------------
INT 21 - Phar Lap 386/DOS-Extender - ISSUE REAL-MODE INTERRUPT
AX = 2511h
DS:EDX -> parameter block (see below)
Return: all segment registers unchanged
EDX unchanged
all other registers contain values set by the real-mode int handler
the flags are set as they were left by the real-mode interrupt handler
real-mode register values are returned in the parameter block
Note: this function is also supported by FlashTek X-32VM
SeeAlso: AX=2503h,AX=2505h,AX=250Eh,AH=E3h"OS/286",INT 31/AX=0300h
Format of parameter block:
Offset Size Description
00h WORD interrupt number
02h WORD real-mode DS value
04h WORD real-mode ES value
06h WORD real-mode FS value
08h WORD real-mode GS value
0Ah DWORD real-mode EAX value
0Eh DWORD real-mode EDX value
Note: all other real-mode values set from protected-mode registers
----------212512-----------------------------
INT 21 - Phar Lap 386/DOS-Extender - LOAD PROGRAM FOR DEBUGGING
AX = 2512h
DS:EDX -> pointer to ASCIIZ program name
ES:EBX -> pointer to parameter block (see below)
ECX = size in bytes of LDT buffer
Return: CF clear if successful
EAX = number of segment descriptors in LDT
CF set on error
EAX = error code
02h file not found or path invalid
05h access denied
08h insufficient memory
0Ah environment invalid
0Bh invalid file format
80h LDT too small
Format of parameter block:
Offset Size Description
Input:
00h DWORD 32-bit offset of environment string
04h WORD segment of environment string
06h DWORD 32-bit offset of command-tail string
0Ah WORD segment of command-tail string
0Ch DWORD 32-bit offset of LDT buffer (size in ECX)
10h WORD segment of LDT buffer
Output:
12h WORD real-mode paragraph address of PSP (see also AH=26h)
14h WORD real/protected mode flag
0000h real mode
0001h protected mode
16h DWORD initial EIP value
1Ah WORD initial CS value
1Ch DWORD initial ESP value
20h WORD initial SS value
22h WORD initial DS value
24h WORD initial ES value
26h WORD initial FS value
28h WORD initial GS value
----------212513-----------------------------
INT 21 - Phar Lap 386/DOS-Extender - ALIAS SEGMENT DESCRIPTOR
AX = 2513h
BX = segment selector of descriptor in GDT or LDT
CL = access-rights byte for alias descriptor
CH = use-type bit (USE16 or USE32) for alias descriptor
Return: CF clear if successful
AX = segment selector for created alias
CF set on error
EAX = error code
08h insufficient memory (can't grow LDT)
09h invalid segment selector in BX
----------212514-----------------------------
INT 21 - Phar Lap 386/DOS-Extender - CHANGE SEGMENT ATTRIBUTES
AX = 2514h
BX = segment selector of descriptor in GDT or LDT
CL = new access-rights byte
CH = new use-type bit (USE16 or USE32)
Return: CF clear if successful
CF set on error
EAX = error code
09h invalid selector in BX
SeeAlso: AX=2515h,INT 31/AX=0009h
----------212515-----------------------------
INT 21 - Phar Lap 386/DOS-Extender - GET SEGMENT ATTRIBUTES
AX = 2515h
BX = segment selector of descriptor in GDT or LDT
Return: CF clear if successful
CL = access-rights byte for segment
CH = use-type bit (USE16 or USE32)
ECX<16-31> destroyed
CF set on error
EAX = error code
09h invalid segment selector in BX
SeeAlso: AX=2514h
----------212516-----------------------------
INT 21 - Phar Lap 386/DOS-Extender - FREE ALL MEMORY OWNED BY LDT
AX = 2516h
???
Return: ???
----------212517-----------------------------
INT 21 - Phar Lap 386/DOS-Extender - GET INFO ON DOS DATA BUFFER
AX = 2517h
???
Return: ???
----------212518-----------------------------
INT 21 - Phar Lap 386/DOS-Extender - SPECIFY HANDLER FOR MOVED SEGMENTS
AX = 2518h
???
Return: ???
----------212519-----------------------------
INT 21 - Phar Lap 386/DOS-Extender VMM - GET ADDITIONAL MEMORY ERROR INFO
AX = 2519h
Return: CF clear
EAX = error code
0000h no error
0001h out of physical memory
0002h out of swap space (unable to grow swap file)
0003h out of LDT entries and unable to grow LDT
0004h unable to change extended memory allocation mark
FFFFFFFFh paging disabled
Note: VMM is the Virtual Memory Manager option
----------21251A-----------------------------
INT 21 - Phar Lap 386/DOS-Extender VMM - LOCK PAGES IN MEMORY
AX = 251Ah
EDX = number of 4k pages to lock
if BL = 00h
ECX = linear address of first page to lock
if BL = 01h
ES:ECX -> pointer to first page to lock
Return: CF clear if successful
CF set on error
EAX = error code
08h insufficient memory
09h invalid address range
SeeAlso: AX=251Bh,AX=EB06h,INT 31/AX=0600h
----------21251B-----------------------------
INT 21 - Phar Lap 386/DOS-Extender VMM - UNLOCK PAGES
AX = 251Bh
EDX = number of pages to unlock
if BL = 00h
ECX = linear address of first page to unlock
if BL = 01h
ES:ECX -> pointer to first page to unlock
Return: CF clear if successful
CF set on error
EAX = error code
09h invalid address range
SeeAlso: AX=251Ah,AX=EB07h,INT 31/AX=0601h
----------21251D-----------------------------
INT 21 - Phar Lap 386/DOS-Extender VMM - READ PAGE-TABLE ENTRY
AX = 251Dh
???
Return: ???
SeeAlso: AX=251Eh,AX=EB00h,INT 31/AX=0506h
----------21251E-----------------------------
INT 21 - Phar Lap 386/DOS-Extender VMM - WRITE PAGE-TABLE ENTRY
AX = 251Eh
???
Return: ???
SeeAlso: AX=251Dh,INT 31/AX=0507h
----------21251F-----------------------------
INT 21 - Phar Lap 386/DOS-Extender VMM - EXHANGE TWO PAGE-TABLE ENTRIES
AX = 251Fh
???
Return: ???
SeeAlso: AX=251Dh,AX=251Eh
----------212520-----------------------------
INT 21 - Phar Lap 386/DOS-Extender VMM - GET MEMORY STATISTICS
AX = 2520h
DS:EDX -> pointer to buffer at least 100 bytes in size (see below)
BL = 0 (don't reset VM stats), 1 (reset VM stats)
Return: carry flag clear
Format of VM stats buffer:
Offset Size Description
00h DWORD VM status
0001h VM subsystem is present
0000h VM not present
04h DWORD "nconvpg" number of conventional memory pages available
08h DWORD "nbimpg" number of Compaq built-in memory pages available
0Ch DWORD "nextpg" total number of extended memory pages
10h DWORD "extlim" extender memory pages limit
14h DWORD "aphyspg" number of physical memory pages allocated to appl
18h DWORD "alockpg" number of locked pages owned by application
1Ch DWORD "sysphyspg" number physical memory pages allocated to system
20h DWORD "nfreepg" number of free physical pages; approx if EMS VCPI
24h DWORD linear address of beginning of application address space
28h DWORD linear address of end of application address space
2Ch DWORD number of seconds since last time VM stats were reset
30h DWORD number of page faults since last time
34h DWORD number of pages written to swap file since last time
38h DWORD number of reclaimed pages (page faults on swapped pages)
3Ch DWORD number of virtual pages allocated to the application
40h DWORD size in pages of swap file
44h DWORD number of system pages allocated with EMS calls
48h DWORD minimum number of conventional memory pages
4Ch DWORD maximum size in bytes to which swap file can be increased
50h DWORD "vmflags" bit 0 = 1 if page fault in progress
54h 16 BYTEs reserved for future expansion (set to zero)
----------212521-----------------------------
INT 21 - Phar Lap 386/DOS-Extender VMM - LIMIT PROGRAM'S EXTENDED MEMORY USAGE
AX = 2521h
EBX = max 4k pages of physical extended memory which program may use
Return: CF clear if successful
EBX = maximum limit in pages
ECX = minimum limit in pages
CF set on error
EAX = error code
08h insufficient memory or -nopage switch used
SeeAlso: AX=2522h
----------212522-----------------------------
INT 21 - Phar Lap 386/DOS-Extender VMM - SPECIFY ALTERNATE PAGE-FAULT HANDLER
AX = 2522h
???
Return: ???
SeeAlso: AX=2523h
----------212523-----------------------------
INT 21 - Phar Lap 386/DOS-Extender VMM - SPECIFY OUT-OF-SWAP-SPACE HANDLER
AX = 2523h
???
Return: ???
SeeAlso: AX=2522h
----------212524-----------------------------
INT 21 - Phar Lap 386/DOS-Extender VMM - INSTALL PAGE-REPLACEMENT HANDLERS
AX = 2524h
???
Return: ???
----------212525-----------------------------
INT 21 - Phar Lap 386/DOS-Extender VMM - LIMIT PROGRAM'S CONVENTIONAL MEM USAGE
AX = 2525h
EBX = limit in 4k pages of physical conventional memory which program
may use
Return: CF clear if successful
EBX = maximum limit in pages
ECX = minimum limit in pages
CF set on error
EAX = error code
08h insufficient memory or -nopage switch used
SeeAlso: AX=2521h
----------212526-----------------------------
INT 21 - Phar Lap 386/DOS-Extender - GET CONFIGURATION INFORMATION
AX = 2526h
???
Return: ???
----------21252B-----------------------------
INT 21 - FlashTek X-32VM - VIRTUAL MEMORY MANAGEMENT - PAGE LOCKING
AX = 252Bh
BH = function
05h lock pages
06h unlock pages
BL = address type
00h linear address
ECX = linear start address of memory region
01h segmented address
ES:ECX -> start of memory region
EDX = size of memory region in bytes
Return: CF clear if successful
CF set on error
Note: if X-32 is not using virtual memory, this function always succeeds
----------212532-----------------------------
INT 21 - FlashTek X-32VM - GET EXCEPTION HANDLER VECTOR
AX = 2532h
CL = exception number (00h-0Fh)
Return: CF clear if successful
ES:EBX = CS:EIP of current exception handler
CF set on error (CL > 0Fh)
SeeAlso: AX=2533h
----------212533-----------------------------
INT 21 - FlashTek X-32VM - SET EXCEPTION HANDLER VECTOR
AX = 2533h
CL = exception number (00h-0Fh)
DS:EDX = CS:EIP of new exception handler
Return: CF clear if successful
CF set on error (CL > 0Fh)
SeeAlso: AX=2532h
----------2125C0-----------------------------
INT 21 - Phar Lap 386/DOS-Extender - ALLOCATE MS-DOS MEMORY BLOCK
AX = 25C0h
BX = number of 16-byte paragraphs of MS-DOS memory requested
Return: CF clear if successful
AX = real-mode paragraph address of memory
CF set on error
AX = error code
07h MS-DOS memory control blocks destroyed
08h insufficient memory
BX = size in paragraphs of largest available memory block
SeeAlso: AX=25C1h,AX=25C2h
----------2125C1-----------------------------
INT 21 - Phar Lap 386/DOS-Extender - RELEASE MS-DOS MEMORY BLOCK
AX = 25C1h
CX = real-mode paragraph address of memory block to free
Return: CF clear if successful
EAX destroyed
CF set on error
AX = error code
07h MS-DOS memory control blocks destroyed
09h invalid memory block address in CX
SeeAlso: AX=25C0h,AX=25C2h
----------2125C2-----------------------------
INT 21 - Phar Lap 386/DOS-Extender - MODIFY MS-DOS MEMORY BLOCK
AX = 25C2h
BX = new requested block size in paragraphs
CX = real-mode paragraph address of memory block to modify
Return: CF clear if successful
EAX destroyed
CF set on error
AX = error code
07h MS-DOS memory control blocks destroyed
08h insufficient memory
09h invalid memory block address in CX
BX = size in paragraphs of largest available memory block
SeeAlso: AX=25C0h,AX=25C1h
----------2125C3-----------------------------
INT 21 - Phar Lap 386/DOS-Extender - EXECUTE PROGRAM
AX = 25C3h
ES:EBX -> pointer to parameter block (see below)
DS:EDX -> pointer to ASCIIZ program filename
Return: CF clear if successful
all registers unchanged
CF set on error
EAX = error code
01h function code in AL is invalid ???
02h file not found or path invalid
05h access denied
08h insufficient memory to load program
0Ah environment invalid
0Bh invalid file format
Format of parameter block:
Offset Size Description
00h DWORD 32-bit offset of environment string
04h WORD segment selector of environment string
06h DWORD 32-bit offset of command-tail string
0Ah WORD segment selector of command-tail string
----------2126-------------------------------
INT 21 - DOS 1+ - CREATE NEW PROGRAM SEGMENT PREFIX
AH = 26h
DX = segment at which to create PSP (see below)
Notes: new PSP is updated with memory size information; INTs 22h, 23h, 24h
taken from interrupt vector table
(DOS 2+) DOS assumes that the caller's CS is the segment of the PSP to
copy
SeeAlso: AH=4Bh,AH=50h,AH=51h,AH=55h,AH=62h,AH=67h
Format of PSP:
Offset Size Description
00h 2 BYTEs INT 20 instruction for CP/M CALL 0 program termination
the CDh 20h here is often used as a signature for a valid PSP
02h WORD segment of first byte beyond memory allocated to program
04h BYTE unused filler
05h BYTE CP/M CALL 5 service request (FAR JMP to 000C0h)
BUG: (DOS 2+) PSPs created by INT 21/AH=4Bh point at 000BEh
06h WORD CP/M compatibility--size of first segment for .COM files
08h 2 BYTEs remainder of FAR JMP at 05h
0Ah DWORD stored INT 22 termination address
0Eh DWORD stored INT 23 control-Break handler address
12h DWORD DOS 1.1+ stored INT 24 critical error handler address
16h WORD segment of parent PSP
18h 20 BYTEs DOS 2+ Job File Table, one byte per file handle, FFh = closed
2Ch WORD DOS 2+ segment of environment for process
2Eh DWORD DOS 2+ process's SS:SP on entry to last INT 21 call
32h WORD DOS 3+ number of entries in JFT (default 20)
34h DWORD DOS 3+ pointer to JFT (default PSP:0018h)
38h DWORD DOS 3+ pointer to previous PSP (default FFFFFFFFh in 3.x)
used by SHARE in DOS 3.3
3Ch 4 BYTEs unused by DOS versions <= 5.00
reportedly used by Novell NetWare shell 3.x
40h 2 BYTEs DOS 5.0 version to return on INT 21/AH=30h
42h 6 BYTEs unused by DOS versions <= 5.00
48h BYTE (MSWindows3) bit 0 set if non-Windows application (WINOLDAP)
49h 7 BYTEs unused by DOS versions <= 5.00
50h 3 BYTEs DOS 2+ service request (INT 21/RETF instructions)
53h 9 BYTEs unused in DOS versions <= 5.00
5Ch 16 BYTEs first default FCB, filled in from first commandline argument
overwrites second FCB if opened
6Ch 16 BYTEs second default FCB, filled in from second commandline argument
overwrites beginning of commandline if opened
7Ch 4 BYTEs unused
80h 128 BYTEs commandline / default DTA
command tail is BYTE for length of tail, N BYTEs for the tail,
followed by a BYTE containing 0Dh
Notes: in DOS versions 3.0 and up, the limit on simultaneously open files may
be increased by allocating memory for a new open file table, filling
it with FFh, copying the first 20 bytes from the default table, and
adjusting the pointer and count at 34h and 32h. However, DOS
versions through at least 3.30 will only copy the first 20 file
handles into a child PSP (including the one created on EXEC).
network redirectors based on the original MS-Net implementation use
values of 80h-FEh in the open file table to indicate remote files;
Novell NetWare reportedly also uses values of 80h-FEh
MSDOS 5.00 incorrectly fills the FCB fields when loading a program
high; the first FCB is empty and the second contains the first
parameter
some DOS extenders place protected-mode values in various PSP fields
such as the "parent" field, which can confuse PSP walkers. Always
check either for the CDh 20h signature or that the suspected PSP is
at the beginning of a memory block which owns itself (the preceding
paragraph should be a valid MCB with "owner" the same as the
suspected PSP).
Format of environment block:
Offset Size Description
00h N BYTEs first environment variable, ASCIZ string of form "var=value"
N BYTEs second environment variable, ASCIZ string
...
N BYTEs last environment variable, ASCIZ string of form "var=value"
BYTE 00h
---DOS 3+---
WORD number of strings following environment (normally 1)
N BYTEs ASCIZ full pathname of program owning this environment
other strings may follow
----------2127-------------------------------
INT 21 - DOS 1+ - RANDOM BLOCK READ FROM FCB FILE
AH = 27h
CX = number of records to read
DS:DX -> opened FCB (see AH=0Fh)
Return: AL = status
00h successful, all records read
01h end of file, no data read
02h segment wrap in DTA, no data read
03h end of file, partial read
[DTA] = records read from file
CX = number of records read (return AL = 00h or 03h)
Notes: read begins at current file position as specified in FCB; the file
position is updated after reading
not supported by MS Windows 3.0 DOSX.EXE DOS extender
SeeAlso: AH=21h,AH=28h,AH=3Fh
----------2128-------------------------------
INT 21 - DOS 1+ - RANDOM BLOCK WRITE TO FCB FILE
AH = 28h
CX = number of records to write
DS:DX -> opened FCB (see AH=0Fh)
[DTA] = records to write
Return: AL = status
00h successful
01h disk full or file read-only
02h segment wrap in DTA
CX = number of records written
Notes: write begins at current file position as specified in FCB; the file
position is updated after writing
if CX = 0000h on entry, no data is written; instead the file size is
adjusted to be the same as the file position specified by the random
record and record size fields of the FCB
if the data to be written is less than a disk sector, it is copied into
a DOS disk buffer, to be written out to disk at a later time
not supported by MS Windows 3.0 DOSX.EXE DOS extender
SeeAlso: AH=22h,AH=27h,AH=40h,AH=59h
----------2129-------------------------------
INT 21 - DOS 1+ - PARSE FILENAME INTO FCB
AH = 29h
AL = parsing options
bit 0: skip leading separators
bit 1: use existing drive number in FCB if no drive is specified,
instead of setting field to zero
bit 2: use existing filename in FCB if no base name is specified,
instead of filling field with blanks
bit 3: use existing extension in FCB if no extension is specified,
instead of filling field with blanks
bits 4-7: reserved (0)
DS:SI -> filename string (both '*' and '?' wildcards OK)
ES:DI -> buffer for unopened FCB
Return: AL = result code
00h successful parse, no wildcards encountered
01h successful parse, wildcards present
FFh failed (invalid drive specifier)
DS:SI -> first unparsed character
ES:DI buffer filled with unopened FCB (see AH=0Fh)
Notes: asterisks expanded to question marks in the FCB
all processing stops when a filename terminator is encountered
cannot be used with filespecs which include a path (DOS 2+)
SeeAlso: AH=0Fh,AH=16h,AH=26h
----------212A-------------------------------
INT 21 - DOS 1+ - GET SYSTEM DATE
AH = 2Ah
Return: CX = year (1980-2099)
DH = month
DL = day
---DOS 1.10+---
AL = day of week (00h=Sunday)
SeeAlso: AH=2Bh"DOS",AH=2Ch,AH=E7h,INT 1A/AH=04h,INT 2F/AX=120Dh
----------212B-------------------------------
INT 21 - DOS 1+ - SET SYSTEM DATE
AH = 2Bh
CX = year (1980-2099)
DH = month
DL = day
Return: AL = status
00h successful
FFh invalid date, system date unchanged
Note: DOS 3.3+ also sets CMOS clock
SeeAlso: AH=2Ah,AH=2Dh,INT 1A/AH=05h
----------212B--CX4149-----------------------
INT 21 - AI Architects - ??? - INSTALLATION CHECK
AH = 2Bh
CX = 4149h ('AI')
DX = 413Fh ('A?')
Return: AL <> FFh if installed
Note: Borland's TKERNEL makes this call
----------212B--CX4358-----------------------
INT 21 - PC Tools v5.x PC-Cache - INSTALLATION CHECK
AH = 2Bh
CX = 4358h ('CX')
Return: AL = FFh if PC-Cache not installed
AL = 00h if installed
CX = 6378h ('cx')
BX = ???
DX = ???
SeeAlso: INT 16/AX=FFA5h/CX=1111h
----------212B--CX4445-----------------------
INT 21 - DESQview - INSTALLATION CHECK
AH = 2Bh
CX = 4445h ('DE')
DX = 5351h ('SQ')
AL = subfunction (DV v2.00+)
01h get version
Return: BX = version (BH = major, BL = minor)
Note: early copies of v2.00 return 0002h
02h get shadow buffer info, and start shadowing
Return: BH = rows in shadow buffer
BL = columns in shadow buffer
DX = segment of shadow buffer
04h get shadow buffer info
Return: BH = rows in shadow buffer
BL = columns in shadow buffer
DX = segment of shadow buffer
05h stop shadowing
Return: AL = FFh if DESQview not installed
Notes: in DESQview v1.x, there were no subfunctions; this call only identified
whether or not DESQview was loaded. DESQview v2.52 performs function
01h for all subfunction requests 0Ch and higher and appears to ignore
all lower-numbered functions not listed here.
DESQview versions 2.5x are part of DESQview/X v1.0x.
BUG: subfunction 05h does not appear to work correctly in DESQview 2.52
SeeAlso: INT 10/AH=FEh,INT 10/AH=FFh,INT 15/AX=1024h,INT 15/AX=DE30h
----------212B--CX454C-----------------------
INT 21 - ELRES v1.1 - INSTALLATION CHECK
AH = 2Bh
CX = 454Ch ('EL')
DX = 5253h ('RS')
Return: ES:BX -> ELRES history structure (see below)
DX = DABEh (signature, DAve BEnnett)
Note: ELRES is an MSDOS return code (errorlevel) recorder by David H. Bennett
which stores recent errorlevel values, allows them to be retrieved
for use in batch files, and can place them in an environment variable
SeeAlso: AH=4Bh"ELRES",AH=4Dh
Format of ELRES history structure:
Offset Size Description
00h WORD number of return codes which can be stored by following buffer
02h WORD current position in buffer (treated as a ring)
04h N BYTEs ELRES buffer
----------212B01CX5441-----------------------
INT 21 - TAME v2.10+ - INSTALLATION CHECK
AX = 2B01h
CX = 5441h ('TA')
DX = 4D45h ('ME')
---v2.60---
BH = ???
00h skip ???, else do
Return: AL = 02h if installed
ES:DX -> data area in TAME-RES (see below)
Note: TAME is a shareware program by David G. Thomas which gives up CPU time
to other partitions under a multitasker when the current partition's
program incessantly polls the keyboard or system time
Format of TAME 2.10-2.20 data area:
Offset Size Description
00h BYTE data structure minor version number (01h in TAME 2.20)
01h BYTE data structure major version number (07h in TAME 2.20)
02h DWORD number of task switches
06h DWORD number of keyboard polls
0Ah DWORD number of time polls
0Eh DWORD number of times DESQview told program runs only in foreground
12h DWORD original INT 10h
16h DWORD original INT 14h
1Ah DWORD original INT 15h
1Eh DWORD original INT 16h
22h DWORD original INT 17h
26h DWORD original INT 21h
2Ah DWORD original INT 28h
2Eh WORD offset of TAME INT 10h handler
30h WORD offset of TAME INT 14h handler
32h WORD offset of TAME INT 15h handler
34h WORD offset of TAME INT 16h handler
36h WORD offset of TAME INT 17h handler
38h WORD offset of TAME INT 21h handler
3Ah WORD offset of TAME INT 28h handler
3Ch WORD X in /max:X,Y or /freq:X,Y
3Eh WORD Y in /max:X,Y or /freq:X,Y
40h WORD number of polls remaining before next task switch
42h WORD /KEYIDLE value
44h BYTE flags for interrupts already grabbed by TAME
bit 0: INT 10h
1: INT 14h
2: INT 15h
3: INT 16h
4: INT 17h
5: INT 21h
6: INT 28h
45h BYTE flags for interrupts which may be acted on (same bits as above)
46h BYTE TAME enabled (01h) or disabled (00h)
47h BYTE /TIMEPOLL (01h) or /NOTIMEPOLL (00h)
48h BYTE /NOTIMER (01h) or /TIMER (00h)
49h BYTE window or task number for this task
4Ah BYTE multitasker type ???
01h DESQview
02h DoubleDOS
03h TopView
???
4Bh BYTE type of task switching selected
bit 0: DESQview???
1: DoubleDOS???
2: TopView???
3: KeySwitch
4: HLT instruction
4Ch BYTE ???
4Dh BYTE flags
bit 1: /FREQ instead of /MAX
4Eh BYTE /FG: value
4Fh BYTE task switches left until next FGONLY DESQview API call
50h BYTE ???
Format of TAME 2.30 data area:
Offset Size Description
00h BYTE data structure minor version number (02h in TAME 2.30)
01h BYTE data structure major version number (0Ah in TAME 2.30)
02h DWORD number of task switches
06h DWORD number of keyboard polls
0Ah DWORD number of time polls
0Eh DWORD number of times DESQview told program runs only in foreground
12h DWORD time of last /CLEAR or TAME-RES load
16h DWORD time yielded
1Ah DWORD time spent polling
1Eh DWORD time spent waiting on key input with INT 16/AH=01h,11h
22h DWORD original INT 10h
26h DWORD original INT 14h
2Ah DWORD original INT 15h
2Eh DWORD original INT 16h
32h DWORD original INT 17h
36h DWORD original INT 21h
3Ah DWORD original INT 28h
3Eh WORD offset of TAME INT 10h handler
40h WORD offset of TAME INT 14h handler
42h WORD offset of TAME INT 15h handler
44h WORD offset of TAME INT 16h handler
46h WORD offset of TAME INT 17h handler
48h WORD offset of TAME INT 21h handler
4Ah WORD offset of TAME INT 28h handler
4Ch WORD X in /max:X,Y or /freq:X,Y
4Eh WORD Y in /max:X,Y or /freq:X,Y
50h WORD number of polls remaining before next task switch
52h WORD /KEYIDLE value
54h WORD /FG: value
56h WORD task switches left until next FGONLY DESQview API call
58h WORD multitasker version
5Ah WORD virtual screen segment
5Ch BYTE flags for interrupts already grabbed by TAME
bit 0: INT 10h
1: INT 14h
2: INT 15h
3: INT 16h
4: INT 17h
5: INT 21h
6: INT 28h
5Dh BYTE flags for interrupts which may be acted on (same bits as above)
5Eh BYTE window or task number for this task
5Fh BYTE multitasker type
01h DESQview
02h DoubleDOS
03h TopView
04h OmniView
05h VM/386
60h BYTE type of task switching selected (bit flags)
bit 0: DESQview
1: DoubleDOS
2: TopView
3: OmniView
4: KeySwitch
5: HLT instruction
61h BYTE watch_DOS
62h BYTE bit flags
bit 0: TAME enabled
1: /FREQ instead of /MAX (counts in 3Ch and 3Eh per tick)
2: /TIMEPOLL
3: /KEYPOLL
4: inhibit timer
5: enable status monitoring
63h BYTE old status
64h WORD signature DA34h
Format of TAME 2.60 data area:
Offset Size Description
00h BYTE data structure minor version number (02h in TAME 2.60)
01h BYTE data structure major version number (0Bh in TAME 2.60)
02h DWORD number of task switches
06h DWORD number of keyboard polls
0Ah DWORD number of time polls
0Eh DWORD number of times DESQview told program runs only in foreground
12h DWORD time of last /CLEAR or TAME-RES load
16h DWORD time yielded
1Ah DWORD time spent polling
1Eh DWORD time spent waiting on key input with INT 16/AH=01h,11h
22h 4 BYTEs ???
26h DWORD original INT 10h
2Ah DWORD original INT 14h
2Eh DWORD original INT 15h
32h DWORD original INT 16h
36h DWORD original INT 17h
3Ah DWORD original INT 21h
3Eh DWORD original INT 28h
42h WORD offset of TAME INT 10h handler
44h WORD offset of TAME INT 14h handler
46h WORD offset of TAME INT 15h handler
48h WORD offset of TAME INT 16h handler
4Ah WORD offset of TAME INT 17h handler
4Ch WORD offset of TAME INT 21h handler
4Eh WORD offset of TAME INT 28h handler
50h WORD X in /max:X,Y or /freq:X,Y
52h WORD Y in /max:X,Y or /freq:X,Y
54h WORD number of polls remaining before next task switch
56h WORD /KEYIDLE value
58h 4 BYTEs ???
5Ch WORD X in /boost:X,Y
5Eh WORD Y in /boost:X,Y
60h WORD /FG: value
62h WORD task switches left until next FGONLY DESQview API call
64h WORD multitasker version ???
66h WORD virtual screen segment
68h BYTE flags for interrupts already grabbed by TAME
bit 0: INT 10h
1: INT 14h
2: INT 15h
3: INT 16h
4: INT 17h
5: INT 21h
6: INT 28h
69h BYTE flags for interrupts which may be acted on (same bits as above)
6Ah BYTE window or task number for this task
6Bh BYTE multitasker type
01h DESQview
02h DoubleDOS
03h TopView
04h OmniView
05h VM/386
6Ch BYTE type of task switching selected (bit flags)
bit 0: DESQview
1: DoubleDOS
2: TopView
3: OmniView
4: KeySwitch
5: HLT instruction
6Dh BYTE watch_DOS
6Eh BYTE bit flags
bit 0: TAME enabled
1: /FREQ instead of /MAX (counts in 50h and 52h per tick)
2: /TIMEPOLL
3: /KEYPOLL
4: inhibit timer
5: enable status monitoring
6Fh BYTE old status
70h WORD signature DA34h
----------212B44BX4D41-----------------------
INT 21 - pcANYWHERE IV/LAN - INSTALLATION CHECK
AX = 2B44h ('D')
BX = 4D41h ('MA')
CX = 7063h ('pc')
DX = 4157h ('AW')
Return: AX = 4F4Bh ('OK') if large host resident
= 6F6Bh ('ok') if small host resident
CX:DX -> API entry point
SeeAlso: INT 16/AH=79h
Call API entry point with:
AX = 0000h get pcANYWHERE IV version
DS:SI -> BYTE buffer for host type code
Return: AH = version number
AL = revision number
DS:DI buffer byte filled with
00h full-featured host
01h limited-feature LAN host
other API may not be supported
AX = 0001h initialize operation
DS:SI -> initialization request structure (see below)
Return: AX = function status (see below)
AX = 0002h get status
Return: AH = current operating mode (see init req structure below)
AL = current connection status
bit 0: a physical connection is active
bit 1: remove screen updating is active
bit 2: connection checking is active
bit 3: hot key detection is active
bit 4: background file transfer is active
AX = 0003h suspend remote screen updates
Return: AX = function status (see below)
AX = 0004h resume screen updates
Return: AX = function status (see below)
AX = 0005h end current remote access session
DS:SI -> termination request structure (see below)
Return: AX = function status (see below)
AX = 0006h remove pcANYWHERE IV from memory
Return: AX = status
0000h successful
FFD2h unable to release allocated memory
FFD1h unable to release interrupt vectors
AX = 8000h read data from communications channel
DS:BX -> buffer
CX = buffer size
Return: AX >= number of characters read/available
AX < 0 on error
AX = 8001h write data to communications channel
DS:BX -> buffer
CX = buffer size
Return: AX >= number of characters written
AX < 0 on error
AX = 8002h get connection status
Return: AX = status
> 0000h if connection active
= 0000h if connection lost
< 0000h on error
Format of initialization request structure:
Offset Size Description
00h BYTE operating mode
00h wait for a call
01h hot key activates
02h incoming call activates
03h initiate a call
01h 3 BYTEs user ID to append to config file names
04h WORD DS-relative pointer to path for config files
06h WORD DS-relative pointer to path for program files
Format of termination request structure:
Offset Size Description
00h BYTE operating mode after termination
00h wait for a call
01h hot key activates
02h incoming call activates
80h use current mode
FFh remove from memory
Values for function status:
0000h function completed successfully
FFF2h unable to establish a connection when operating mode is
"Initiate a call"
FFF3h modem configuration is invalid (corrupt config)
FFF4h modem initialization failed (no modem response)
FFF5h the communications device could not be initialized
FFF6h the host operator aborted the function
FFF7h the communications driver type specified in the configuration file is
different than the one loaded when pcANYWHERE IV was initially started
FFF9h the configuration file is invalid
FFFAh the configuration file could not be found
FFFBh no session is active
FFFCh a remote access session is active
FFFDh the specified operating mode is invalid
----------212C-------------------------------
INT 21 - DOS 1+ - GET SYSTEM TIME
AH = 2Ch
Return: CH = hour
CL = minute
DH = second
DL = 1/100 seconds
Note: on most systems, the resolution of the system clock is about 5/100sec,
so returned times generally do not increment by 1
on some systems, DL may always return 00h
SeeAlso: AH=2Ah,AH=2Dh,AH=E7h,INT 1A/AH=00h,INT 1A/AH=02h,INT 1A/AH=FEh
SeeAlso: INT 2F/AX=120Dh
----------212D-------------------------------
INT 21 - DOS 1+ - SET SYSTEM TIME
AH = 2Dh
CH = hour
CL = minute
DH = second
DL = 1/100 seconds
Return: AL = result
00h successful
FFh invalid time, system time unchanged
Note: DOS 3.3+ also sets CMOS clock
SeeAlso: AH=2Bh"DOS",AH=2Ch,INT 1A/AH=01h,INT 1A/AH=03h,INT 1A/AH=FFh"AT&T"
----------212E--DL00-------------------------
INT 21 - DOS 1+ - SET VERIFY FLAG
AH = 2Eh
DL = 00h (DOS 1.x/2.x only)
AL = new state of verify flag
00h off
01h on
Notes: default state at system boot is OFF
when ON, all disk writes are verified provided the device driver
supports read-after-write verification
SeeAlso: AH=54h
----------212F-------------------------------
INT 21 - DOS 2+ - GET DISK TRANSFER AREA ADDRESS
AH = 2Fh
Return: ES:BX -> current DTA
Note: under the FlashTek X-32 DOS extender, the pointer is in ES:EBX
SeeAlso: AH=1Ah
----------2130-------------------------------
INT 21 - DOS 2+ - GET DOS VERSION
AH = 30h
---DOS 5.0---
AL = what to return in BH
00h OEM number (as for DOS 2.0-4.0x)
01h version flag
Return: AL = major version number (00h if DOS 1.x)
AH = minor version number
BL:CX = 24-bit user serial number (most versions do not use this)
---if DOS <5 or AL=00h---
BH = OEM number
00h IBM
05h Zenith
16h DEC
23h Olivetti
29h Toshiba
4Dh Hewlett-Packard
99h STARLITE architecture (OEM DOS, NETWORK DOS, SMP DOS)
FFh Microsoft, Phoenix
---if DOS 5.0 and AL=01h---
BH = version flag
08h DOS is in ROM
10h DOS is in HMA
Notes: the OS/2 v1.x Compatibility Box returns major version 0Ah (10)
the OS/2 v2.x Compatibility Box returns major version 14h (20)
the Windows/NT DOS box returns major version 1Eh (30)
DOS 4.01 and 4.02 identify themselves as version 4.00; use
INT 21/AH=87h to distinguish between the original European MSDOS 4.00
and the later PCDOS 4.0x and MSDOS 4.0x
generic MSDOS 3.30, Compaq MSDOS 3.31, and others identify themselves
as PC-DOS by returning OEM number 00h
the version returned under DOS 4.0x may be modified by entries in
the special program list (see AH=52h)
the version returned under DOS 5.0 may be modified by SETVER; use
AX=3306h to get the true version number
SeeAlso: AX=3000h/BX=3000h,AX=3306h,AX=4452h,AH=87h,INT 15/AX=4900h
SeeAlso: INT 2F/AX=122Fh,INT 2F/AX=E002h
----------2130-------------------------------
INT 21 - Phar Lap 386/DOS-Extender, Intel Code Builder - INSTALLATION CHECK
AH = 30h
EAX = 00003000h
EBX = 50484152h ("PHAR")
Return: AL = major DOS version
AH = minor DOS version
EAX bits 31-16 = 4458h ('DX') if 386/DOS-extender installed
BL = ASCII major version number
EAX bits 31-16 = 4243h ('BC') if Intel Code Builder installed
EDX = address of GDA
SeeAlso: AX=2501h,AX=FF00h,INT 2F/AX=F100h
----------2130--DXABCD-----------------------
INT 21 - VIRUS - "Possessed" - INSTALLATION CHECK
AH = 30h
DX = ABCDh
Return: DX = DCBAh if installed
SeeAlso: AX=0D20h,AX=30F1h
----------213000BX1234-----------------------
INT 21 - CTask 2.0+ - INSTALLATION CHECK
AX = 3000h
BX = 1234h
DS:DX -> 8-byte version string (DX < FFF0h) "CTask21",00h for v2.1-2.2
Return: AL = DOS major version
AH = DOS minor version
CX:BX -> Ctask global data block
Notes: if first eight bytes of returned data block equal eight bytes passed
in, CTask is resident
CTask is a multitasking kernel for C written by Thomas Wagner
----------213000BX3000-----------------------
INT 21 - PC-MOS/386 v3.0 - INSTALLATION CHECK/GET VERSION
AX = 3000h
BX = 3000h
CX = DX = 3000h
Return: AX = PC-MOS version
Program: PC-MOS/386 is a multitasking/multiuser MSDOS-compatible operating
system by Software Links, Inc.
SeeAlso: AH=30h,INT 38/AH=02h,INT 38/AH=10h
----------2130F1-----------------------------
INT 21 - VIRUS - "Dutch-555"/"Quit 1992" - INSTALLATION CHECK
AX = 30F1h
Return: AL = 00h if resident
SeeAlso: AH=30h/DX=ABCDh,AX=330Fh
----------2130FFCX4445-----------------------
INT 21 - DESQ??? - INSTALLATION CHECK
AX = 30FFh
CX = 4445h ("DE")
DX = 5351h ("SQ")
Return: BH = 05h if installed
???
Note: called by DUBLDISK.COM v2.6; this function is not supported by
DESQview, so it may be for DESQview's precursor DESQ.
SeeAlso: AX=4404h"DUBLDISK"
----------2131-------------------------------
INT 21 - DOS 2+ - TERMINATE AND STAY RESIDENT
AH = 31h
AL = return code
DX = number of paragraphs to keep resident
Return: never
Notes: the value in DX only affects the memory block containing the PSP;
additional memory allocated via AH=48h is not affected
the minimum number of paragraphs which will remain resident is 11h
for DOS 2.x and 06h for DOS 3+
most TSRs can save some memory by releasing their environment block
before terminating (see AH=26h,AH=49h)
SeeAlso: AH=00h,AH=4Ch,AH=4Dh,INT 20,INT 22,INT 27
----------2132-------------------------------
INT 21 - DOS 2+ - GET DOS DRIVE PARAMETER BLOCK FOR SPECIFIC DRIVE
AH = 32h
DL = drive number (00h = default, 01h = A:, etc)
Return: AL = status
00h successful
DS:BX -> Drive Parameter Block (DPB) for specified drive
FFh invalid or network drive
Notes: the OS/2 compatibility box supports the DOS 3.3 version of this call
except for the DWORD at offset 12h
this call updates the DPB by reading the disk; the DPB may be accessed
via the DOS list of lists (see AH=52h) if disk access is not
desirable.
undocumented prior to the release of DOS 5.0; only the DOS 4+ version
of the DPB has been documented, however
SeeAlso: AH=1Fh,AH=52h
Format of DOS Drive Parameter Block:
Offset Size Description
00h BYTE drive number (00h = A:, 01h = B:, etc)
01h BYTE unit number within device driver
02h WORD bytes per sector
04h BYTE highest sector number within a cluster
05h BYTE shift count to convert clusters into sectors
06h WORD number of reserved sectors at beginning of drive
08h BYTE number of FATs
09h WORD number of root directory entries
0Bh WORD number of first sector containing user data
0Dh WORD highest cluster number (number of data clusters + 1)
16-bit FAT if greater than 0FF6h, else 12-bit FAT
0Fh BYTE number of sectors per FAT
10h WORD sector number of first directory sector
12h DWORD address of device driver header
16h BYTE media ID byte
17h BYTE 00h if disk accessed, FFh if not
18h DWORD pointer to next DPB
---DOS 2.x---
1Ch WORD cluster containing start of current directory, 0000h=root,
FFFFh = unknown
1Eh 64 BYTEs ASCIZ pathname of current directory for drive
---DOS 3.x---
1Ch WORD cluster at which to start search for free space when writing
1Eh WORD number of free clusters on drive, FFFFh = unknown
---DOS 4.0-5.0---
0Fh WORD number of sectors per FAT
11h WORD sector number of first directory sector
13h DWORD address of device driver header
17h BYTE media ID byte
18h BYTE 00h if disk accessed, FFh if not
19h DWORD pointer to next DPB
1Dh WORD cluster at which to start search for free space when writing,
usually the last cluster allocated
1Fh WORD number of free clusters on drive, FFFFh = unknown
----------2133-------------------------------
INT 21 - DOS 2+ - EXTENDED BREAK CHECKING
AH = 33h
AL = subfunction
00h get current extended break state
Return: DL = current state, 00h = off, 01h = on
01h set state of extended ^C/^Break checking
DL = 00h off, check only on character I/O functions
01h on, check on all DOS functions
Note: under DOS 3.1+, this function does not use any of the DOS-internal and
may thus be called at any time
SeeAlso: AX=3302h
----------213302-----------------------------
INT 21 - DOS 3.x+ internal - GET AND SET EXTENDED CONTROL-BREAK CHECKING STATE
AX = 3302h
DL = new state
00h for OFF or 01h for ON
Return: DL = old state of extended BREAK checking
Note: this function does not use any of the DOS-internal stacks and may thus
be called at any time; one possible use is modifying Control-Break
checking from within an interrupt handler or TSR
SeeAlso: AH=33h
----------213305-----------------------------
INT 21 - DOS 4+ - GET BOOT DRIVE
AX = 3305h
Return: DL = boot drive (1=A:,...)
Notes: fully reentrant
NEC 9800-series PCs always call the boot drive A: and assign the other
drive letters sequentially to the other drives in the system
----------213306-----------------------------
INT 21 - DOS 5.0 - GET TRUE VERSION NUMBER
AX = 3306h
Return: BL = major version
BH = minor version
DL = revision (bits 2-0, all others 0)
DH = version flags
bit 3: DOS is in ROM
bit 4: DOS in in HMA
Notes: this function always returns the true version number, unlike AH=30h,
whose return value may be changed with SETVER
because of the conflict from the CBIS PowerLAN redirector (see next
entry), programs should check whether BH is less than 100 (64h)
and BL is at least 5 before accepting the returned BX as the true
version number; however, even this is not entirely reliable when
that redirector is loaded
fully reentrant
BUG: DR-DOS 5.0 and 6.0 return CF set/AX=0001h for INT 21/AH=33h
subfunctions other than 00h-02h and 05h, while MS-DOS returns AL=FFh
for invalid subfunctions
SeeAlso: AH=30h,INT 2F/AX=112Fh
----------213306-----------------------------
INT 21 - CBIS POWERLAN - NETWORK REDIRECTOR - ???
AX = 3306h
Return: AX = 3306h
BL = ??? (usually 00h)
BH = ??? (usually 00h or FFh)
Note: unknown function, is in conflict with DOS 5.0 version call
SeeAlso: AX=3306h"DOS"
----------21330F-----------------------------
INT 21 - VIRUS - "Burghofer" - INSTALLATION CHECK
AX = 330Fh
Return: AL = 0Fh if resident (DOS returns AL=FFh)
SeeAlso: AX=30F1h,AX=33E0h
----------2133E0-----------------------------
INT 21 - VIRUS - "Oropax" - INSTALLATION CHECK
AX = 33E0h
Return: AL = E0h if resident (DOS returns AL=FFh)
SeeAlso: AX=330Fh,AX=357Fh
----------2134-------------------------------
INT 21 - DOS 2+ - GET ADDRESS OF INDOS FLAG
AH = 34h
Return: ES:BX -> one-byte InDOS flag
Notes: the value of InDOS is incremented whenever an INT 21 function begins
and decremented whenever one completes
during an INT 28 call, it is safe to call some INT 21 functions even
though InDOS may be 01h instead of zero
InDOS alone is not sufficient for determining when it is safe to
enter DOS, as the critical error handling decrements InDOS and
increments the critical error flag for the duration of the critical
error. Thus, it is possible for InDOS to be zero even if DOS is
busy.
the critical error flag is the byte immediately following InDOS in
DOS 2.x, and the byte BEFORE the InDOS flag in DOS 3+ (except COMPAQ
DOS 3.0, where the critical error flag is located 1AAh bytes BEFORE
the critical section flag)
For DOS 3.1+, an undocumented call exists to get the address of the
critical error flag (see AX=5D06h)
this function was undocumented prior to the release of DOS 5.0.
SeeAlso: AX=5D06h,AX=5D0Bh,INT 15/AX=DE1Fh,INT 28
----------2135-------------------------------
INT 21 - DOS 2+ - GET INTERRUPT VECTOR
AH = 35h
AL = interrupt number
Return: ES:BX -> current interrupt handler
SeeAlso: AH=25h,AX=2503h
----------213501-----------------------------
INT 21 P - FlashTek X-32VM - ALLOCATE PROTECTED-MODE SELECTOR
AX = 3501h
Return: CF clear if successful
BX = new selector
CF set on error (no more selectors available)
Note: the new selector will be an expand-up read/write data selector with
undefined base and limit
SeeAlso: AX=3502h,INT 31/AX=0000h
----------213502-----------------------------
INT 21 P - FlashTek X-32VM - DEALLOCATE PROTECTED-MODE SELECTOR
AX = 3502h
BX = selector
Return: CF clear if successful
CF set on error (invalid selector)
Note: only selectors allocated via AX=3501h should be deallocated
SeeAlso: AX=3501h,INT 31/AX=0001h
----------213503-----------------------------
INT 21 P - FlashTek X-32VM - SET SELECTOR BASE ADDRESS
AX = 3503h
BX = selector
ECX = base address
Return: CF clear if successful
CF set on error (invalid selector)
SeeAlso: AX=3504h,AX=3505h,INT 31/AX=0007h
----------213504-----------------------------
INT 21 P - FlashTek X-32VM - GET SELECTOR BASE ADDRESS
AX = 3504h
BX = selector
Return: CF clear if successful
ECX = absolute base address of selector
CF set on error (invalid selector)
SeeAlso: AX=3503h,INT 31/AX=0006h
----------213505-----------------------------
INT 21 P - FlashTek X-32VM - SET SELECTOR LIMIT
AX = 3505h
BX = selector
ECX = desired limit
Return: CF clear if successful
ECX = actual limit set
CF set on error (no more selectors available)
Note: the limit will be rounded down to nearest 4K boundary if the requested
limit is greater than 1MB
SeeAlso: AX=3503h,INT 31/AX=0008h
----------21350A-----------------------------
INT 21 P - FlashTek X-32VM - PHYSICAL ADDRESS MAPPING
AX = 350Ah
EBX = absolute physical address
ECX = size in bytes of area to map
Return: CF clear if successful
CF set on error (insufficient memory or service refused by DPMI host)
Notes: should not make repeated calls for the same physical address
there is no provision for unmapping memory
----------21350B-----------------------------
INT 21 P - FlashTek X-32VM - UPDATE AND RETURN AVAILABLE FREE MEMORY
AX = 350Bh
DS = default selector for DS
Return: CF clear
EAX = maximum amount of memory which can be allocated via AX=350Ch
SeeAlso: AX=350Ch
----------21350C-----------------------------
INT 21 P - FlashTek X-32VM - ALLOCATE A BLOCK OF MEMORY
AX = 350Ch
ECX = size of block in bytes
DS = default DS
Return: CF clear if successful
EAX = near pointer to new block
EDX = new lowest legal value for stack
CF set on error (requested size not multiple of 4K)
SeeAlso: AX=350Bh,AX=350Dh
----------21350D-----------------------------
INT 21 P - FlashTek X-32VM - RESERVE BLOCK OF MEMORY FOR 32-BIT STACK
AX = 350Dh
EBX = current ESP value
ECX = size of block in bytes
DS = default DS
Return: CF clear if successful
EBX = new value for ESP
EDX = suggested new limit for SS
CF set on error
Note: this function should only be called once during initialization
SeeAlso: AX=350Bh,AX=350Ch
----------21357F-----------------------------
INT 21 - VIRUS - "Agiplan"/"Month 4-6" - INSTALLATION CHECK
AX = 357Fh
Return: DX = FFFFh if installed
SeeAlso: AX=33E0h,AX=3DFFh
----------2136-------------------------------
INT 21 - DOS 2+ - GET FREE DISK SPACE
AH = 36h
DL = drive number (00h = default, 01h = A:, etc)
Return: AX = FFFFh if invalid drive
else
AX = sectors per cluster
BX = number of free clusters
CX = bytes per sector
DX = total clusters on drive
Notes: free space on drive in bytes is AX * BX * CX
total space on drive in bytes is AX * CX * DX
"lost clusters" are considered to be in use
according to Dave Williams' MSDOS reference, the value in DX is
incorrect for non-default drives after ASSIGN is run
SeeAlso: AH=1Bh,AH=1Ch
----------213700-----------------------------
INT 21 - DOS 2+ - "SWITCHAR" - GET SWITCH CHARACTER
AX = 3700h
Return: AL = status
00h successful
DL = current switch character
FFh unsupported subfunction
Desc: Determine the character which is used to introduce command switches.
This setting is ignored by DOS commands in version 4.0 and higher,
but is honored by many third-party programs.
Notes: documented in some OEM versions of some releases of DOS
supported by OS/2 compatibility box
always returns DL=2Fh for DOS 5.0
SeeAlso: AX=3701h
----------213701-----------------------------
INT 21 - DOS 2+ - "SWITCHAR" - SET SWITCH CHARACTER
AX = 3701h
DL = new switch character
Return: AL = status
00h successful
FFh unsupported subfunction
Notes: documented in some OEM versions of some releases of DOS
supported by OS/2 compatibility box
ignored by DOS 5.0
SeeAlso: AX=3700h
----------2137-------------------------------
INT 21 - DOS 2.x and 3.3+ only - "AVAILDEV" - SPECIFY \DEV\ PREFIX USE
AH = 37h
AL = subfunction
02h get availdev flag
Return: DL = 00h \DEV\ must precede character device names
= nonzero \DEV\ is optional
03h set availdev flag
DL = 00h \DEV\ is mandatory
= nonzero \DEV\ is optional
Return: AL = status
00h successful
FFh unsupported subfunction
Notes: all versions of DOS from 2.00 allow \DEV\ to be prepended to device
names without generating an error even if the directory \DEV does
not actually exist (other paths generate an error if they do not
exist).
although DOS 3.3+ accepts these calls, they have no effect, and
AL=02h always returns DL=FFh
----------2138-------------------------------
INT 21 - DOS 2+ - GET COUNTRY-SPECIFIC INFORMATION
AH = 38h
--DOS 2.x--
AL = 00h get current-country info
DS:DX -> buffer for returned info (see below)
Return: CF set on error
AX = error code (02h)
CF clear if successful
AX = country code (MSDOS 2.11 only)
buffer at DS:DX filled
--DOS 3+--
AL = 00h for current country
AL = 01h thru 0FEh for specific country with code <255
AL = 0FFh for specific country with code >= 255
BX = 16-bit country code
DS:DX -> buffer for returned info (see below)
Return: CF set on error
AX = error code (02h)
CF clear if successful
BX = country code
DS:DX buffer filled
SeeAlso: AH=65h,INT 10/AX=5001h,INT 2F/AX=110Ch,INT 2F/AX=1404h
Format of PCDOS 2.x country info:
Offset Size Description
00h WORD date format 0 = USA mm dd yy
1 = Europe dd mm yy
2 = Japan yy mm dd
02h BYTE currency symbol
03h BYTE 00h
04h BYTE thousands separator char
05h BYTE 00h
06h BYTE decimal separator char
07h BYTE 00h
08h 24 BYTEs reserved
Format of MSDOS 2.x,DOS 3+ country info:
Offset Size Description
00h WORD date format (see above)
02h 5 BYTEs ASCIZ currency symbol string
07h 2 BYTEs ASCIZ thousands separator
09h 2 BYTEs ASCIZ decimal separator
0Bh 2 BYTEs ASCIZ date separator
0Dh 2 BYTEs ASCIZ time separator
0Fh BYTE currency format
bit 2 = set if currency symbol replaces decimal point
bit 1 = number of spaces between value and currency symbol
bit 0 = 0 if currency symbol precedes value
1 if currency symbol follows value
10h BYTE number of digits after decimal in currency
11h BYTE time format
bit 0 = 0 if 12-hour clock
1 if 24-hour clock
12h DWORD address of case map routine
(FAR CALL, AL = character to map to upper case [>= 80h])
16h 2 BYTEs ASCIZ data-list separator
18h 10 BYTEs reserved
Values for country code:
001h United States
002h Canadian-French
003h Latin America
01Fh Netherlands
020h Belgium
021h France
022h Spain
024h Hungary (not supported by DR-DOS 5.0)
026h Yugoslavia (not supported by DR-DOS 5.0)
027h Italy
029h Switzerland
02Ah Czechoslovakia (not supported by DR-DOS 5.0)
02Bh Austria (DR-DOS 5.0)
02Ch United Kingdom
02Dh Denmark
02Eh Sweden
02Fh Norway
030h Poland (not supported by DR-DOS 5.0)
031h Germany
037h Brazil (not supported by DR-DOS 5.0)
03Dh International English [Australia in DR-DOS 5.0]
051h Japan (DR-DOS 5.0)
052h Korea (DR-DOS 5.0)
15Fh Portugal
166h Finland
311h Middle East (DR-DOS 5.0)
3CCh Israel (DR-DOS 5.0)
----------2138-------------------------------
INT 21 - DOS 3+ - SET COUNTRY CODE
AH = 38h
AL = 01h thru 0FEh for specific country with code <255
AL = FFh for specific country with code >= 255
BX = 16-bit country code
DX = FFFFh
Return: CF set on error
AX = error code (see AH=59h)
CF clear if successful
Note: not supported by OS/2
SeeAlso: INT 2F/AX=1403h
----------2139-------------------------------
INT 21 - DOS 2+ - "MKDIR" - CREATE SUBDIRECTORY
AH = 39h
DS:DX -> ASCIZ pathname
Return: CF clear if successful
AX destroyed
CF set on error
AX = error code (03h,05h) (see AH=59h)
Notes: all directories in the given path except the last must exist
fails if the parent directory is the root and is full
DOS 2.x-3.3 allow the creation of a directory sufficiently deep that
it is not possible to make that directory the current directory
because the path would exceed 64 characters
under the FlashTek X-32 DOS extender, the pointer is in DS:EDX
SeeAlso: AH=3Ah,AH=3Bh,AH=E2h/SF=0Ah,INT 2F/AX=1103h
----------213A-------------------------------
INT 21 - DOS 2+ - "RMDIR" - REMOVE SUBDIRECTORY
AH = 3Ah
DS:DX -> ASCIZ pathname of directory to be removed
Return: CF clear if successful
AX destroyed
CF set on error
AX = error code (03h,05h,06h,10h) (see AH=59h)
Notes: directory must be empty (contain only '.' and '..' entries)
under the FlashTek X-32 DOS extender, the pointer is in DS:EDX
SeeAlso: AH=39h,AH=3Bh,AH=E2h/SF=0Bh,INT 2F/AX=1101h
----------213B-------------------------------
INT 21 - DOS 2+ - "CHDIR" - SET CURRENT DIRECTORY
AH = 3Bh
DS:DX -> ASCIZ pathname to become current directory (max 64 bytes)
Return: CF clear if successful
AX destroyed
CF set on error
AX = error code (03h) (see AH=59h)
Notes: if new directory name includes a drive letter, the default drive is
not changed, only the current directory on that drive
changing the current directory also changes the directory in which
FCB file calls operate
under the FlashTek X-32 DOS extender, the pointer is in DS:EDX
SeeAlso: AH=47h,INT 2F/AX=1105h
----------213C-------------------------------
INT 21 - DOS 2+ - "CREAT" - CREATE OR TRUNCATE FILE
AH = 3CH
CX = file attribute
bit 0: read-only
1: hidden
2: system
3: volume label (ignored)
4: reserved, must be zero (directory)
5: archive bit
7: if set, file is shareable under Novell NetWare
DS:DX -> ASCIZ filename
Return: CF clear if successful
AX = file handle
CF set on error
AX = error code (03h,04h,05h) (see AH=59h)
Notes: if a file with the given name exists, it is truncated to zero length
under the FlashTek X-32 DOS extender, the pointer is in DS:EDX
SeeAlso: AH=16h,AH=3Dh,AH=5Ah,AH=5Bh,AH=93h
----------213D-------------------------------
INT 21 - DOS 2+ - "OPEN" - OPEN EXISTING FILE
AH = 3Dh
AL = access and sharing modes
bits 2-0: access mode
000 read only
001 write only
010 read/write
bit 3: reserved (0)
bits 6-4: sharing mode (DOS 3+)
000 compatibility mode
001 "DENYALL" prohibit both read and write access by others
010 "DENYWRITE" prohibit write access by others
011 "DENYREAD" prohibit read access by others
100 "DENYNONE" allow full access by others
bit 7: inheritance
if set, file is private to current process and will not be
inherited by child processes
DS:DX -> ASCIZ filename
CL = attribute mask of files to look for (server call only)
Return: CF clear if successful
AX = file handle
CF set on error
AX = error code (01h,02h,03h,04h,05h,0Ch) (see AH=59h)
Notes: file pointer is set to start of file
file handles which are inherited from a parent also inherit sharing
and access restrictions
files may be opened even if given the hidden or system attributes
under the FlashTek X-32 DOS extender, the pointer is in DS:EDX
SeeAlso: AH=0Fh,AH=3Ch,AX=4301h,AX=5D00h,INT 2F/AX=1226h
File sharing behavior:
| Second and subsequent Opens
First |Compat Deny Deny Deny Deny
Open | All Write Read None
|R W RW R W RW R W RW R W RW R W RW
- - - - -| - - - - - - - - - - - - - - - - -
Compat R |Y Y Y N N N 1 N N N N N 1 N N
W |Y Y Y N N N N N N N N N N N N
RW|Y Y Y N N N N N N N N N N N N
- - - - -|
Deny R |C C C N N N N N N N N N N N N
All W |C C C N N N N N N N N N N N N
RW|C C C N N N N N N N N N N N N
- - - - -|
Deny R |2 C C N N N Y N N N N N Y N N
Write W |C C C N N N N N N Y N N Y N N
RW|C C C N N N N N N N N N Y N N
- - - - -|
Deny R |C C C N N N N Y N N N N N Y N
Read W |C C C N N N N N N N Y N N Y N
RW|C C C N N N N N N N N N N Y N
- - - - -|
Deny R |2 C C N N N Y Y Y N N N Y Y Y
None W |C C C N N N N N N Y Y Y Y Y Y
RW|C C C N N N N N N N N N Y Y Y
Legend: Y = open succeeds, N = open fails with error code 05h
C = open fails, INT 24 generated
1 = open succeeds if file read-only, else fails with error code
2 = open succeeds if file read-only, else fails with INT 24
----------213DFF-----------------------------
INT 21 - VIRUS - "JD-448" - INSTALLATION CHECK
AX = 3DFFh
Return: AX = 4A44h if resident
SeeAlso: AX=357Fh,AX=4203h
----------213E-------------------------------
INT 21 - DOS 2+ - "CLOSE" - CLOSE FILE
AH = 3Eh
BX = file handle
Return: CF clear if successful
AX destroyed
CF set on error
AX = error code (06h) (see AH=59h)
Note: if the file was written to, any pending disk writes are performed, the
time and date stamps are set to the current time, and the directory
entry is updated
SeeAlso: AH=10h,AH=3Ch,AH=3Dh,INT 2F/AX=1106h,INT 2F/AX=1227h
----------213F-------------------------------
INT 21 - DOS 2+ - "READ" - READ FROM FILE OR DEVICE
AH = 3Fh
BX = file handle
CX = number of bytes to read
DS:DX -> buffer for data
Return: CF clear if successful
AX = number of bytes actually read (0 if at EOF before call)
CF set on error
AX = error code (05h,06h) (see AH=59h)
Notes: data is read beginning at current file position, and the file position
is updated after a successful read
the returned AX may be smaller than the request in CX if a partial
read occurred
if reading from CON, read stops at first CR
under the FlashTek X-32 DOS extender, the pointer is in DS:EDX
SeeAlso: AH=27h,AH=40h,AH=93h,INT 2F/AX=1108h,INT 2F/AX=1229h
----------213F-------------------------------
INT 21 - Turbo Debug HARDWARE BREAKPOINTS - READ STATUS BLOCK
AH = 3Fh
BX = handle for character device "TDHDEBUG"
CX = number of bytes to read
DS:DX -> buffer for status block (see below)
Return: CF clear if successful
AX = number of bytes actually read
CF set on error
AX = error code (05h,06h) (see AH=59h)
SeeAlso: AH=40h"Turbo Debug"
Format of status block:
Offset Size Description
00h BYTE status of command
00h successful
01h invalid handle
02h no more breakpoints available
03h hardware does not support specified breakpoint type
04h previous command prevents execution
05h debugger hardware not found
06h hardware failure
07h invalid command
08h driver not initialized yet
FEh recursive entry (hardware breakpoint inside hw bp handler)
---status for command 01h---
01h WORD device driver interface version number (currently 1)
03h WORD device driver software version
05h BYTE maximum simultaneous hardware breakpoints
06h BYTE configuration bits
bit 0: CPU and DMA accesses are distinct
1: can detect DMA transfers
2: supports data mask
3: hardware pass counter on breakpoints
4: can match on data as well as addresses
07h BYTE supported breakpoint types
bit 0: memory read
1: memory write
2: memory read/write
3: I/O read
4: I/O write
5: I/O read/write
6: instruction fetch
08h WORD supported addressing match modes
bit 0: any address
1: equal to test value
2: not equal
3: above test value
4: below test value
5: below or equal
6: above or equal
7: within range
8: outside range
0Ah WORD supported data matches
bit 0: any data
1: equal to test value
2: not equal
3: above test value
4: below test value
5: below or equal
6: above or equal
7: within range
8: outside range
0Ch BYTE maximum data match length (01h, 02h, or 04h)
0Dh WORD size of onboard memory (in K)
0Fh WORD maximum number of trace-back events
11h WORD hardware breakpoint enable byte address segment (0000h if not
supported)
---status for command 04h---
01h BYTE handle to use when referring to the just-set breakpoint
----------213F-------------------------------
INT 21 - PC/TCP IPCUST.SYS - READ CONFIGURATION DATA
AH = 3Fh
BX = handle for character device "$IPCUST"
CX = number of bytes to read
DS:DX -> buffer for configuration data (see below)
Return: CF clear if successful
AX = number of bytes actually read
CF set on error
AX = error code (05h,06h) (see AH=59h)
Notes: if less than the entire data is read or written, the next read/write
continues where the previous one ended; IOCTL calls AX=4402h and
AX=4403h both reset the location at which the next operation starts
to zero
the data pointer is also reset to zero if the previous read or write
reached or exceeded the end of the data, when the current function
is read and the previous was write, or vice versa
SeeAlso: AH=40h"IPCUST",AX=4402h"IPCUST"
Format of configuration data:
Offset Size Description
00h 12 BYTEs IPCUST.SYS device driver header
12h BYTE ???
13h BYTE ???
14h WORD ???
16h BYTE bit flags
bit 0: send BS rather than DEL for BackSpace key
bit 1: wrap long lines
17h BYTE ???
18h 64 BYTEs ASCIZ hostname
58h 64 BYTEs ASCIZ domain name
(fully qualified domain name is hostname.domain-name)
98h 16 BYTEs ASCIZ username
A8h 64 BYTEs ASCIZ full name
E8h 64 BYTEs ASCIZ office address
128h 32 BYTEs ASCIZ phone number
148h WORD offset from GMT in minutes
14Ah 4 BYTEs ASCIZ timezone name
14Eh WORD number of time servers
150h ? DWORDs IP addresses for time servers (big-endian)
???
164h WORD number of old-style name servers
166h 3 DWORDs IP addresses for name servers (big-endian)
172h WORD number of domain name servers
174h 3 DWORDs IP addresses for domain name servers (big-endian)
180h DWORD IP address of default gateway (big-endian)
184h DWORD IP address of log server (big-endian)
188h DWORD IP address of cookie server (big-endian)
18Ch DWORD IP address of lpr server (big-endian)
190h DWORD IP address of imagen print server
194h 54 BYTEs ???
1E8h WORD TCP default window size in bytes
1EAh WORD TCP low window size
1ECh 64 BYTEs ASCIZ host tabel filename
22Ch 2 BYTEs ???
22Eh 80 BYTEs ASCIZ mail relay host name
27Eh BYTE ???
27Fh BYTE ??? bit flags
280h 44 BYTEs ???
2ACh WORD ???
2AEh 202 BYTEs ???
----------2140-------------------------------
INT 21 - DOS 2+ - "WRITE" - WRITE TO FILE OR DEVICE
AH = 40h
BX = file handle
CX = number of bytes to write
DS:DX -> data to write
Return: CF clear if successful
AX = number of bytes actually written
CF set on error
AX = error code (05h,06h) (see AH=59h)
Notes: if CX is zero, no data is written, and the file is truncated or
extended to the current position
data is written beginning at the current file position, and the file
position is updated after a successful write
the usual cause for AX < CX on return is a full disk
BUG: a write of zero bytes will appear to succeed when it actually failed
if the write is extending the file and there is not enough disk
space for the expanded file (DOS 5.0); one should therefore check
whether the file was in fact extended by seeking to 0 bytes from
the end of the file (INT 21/AX=4202h/CX=0/DX=0)
under the FlashTek X-32 DOS extender, the pointer is in DS:EDX
SeeAlso: AH=28h,AH=3Fh,AH=93h,INT 2F/AX=1109h
----------2140-------------------------------
INT 21 - Turbo Debug HARDWARE BREAKPOINTS - SEND CMD TO HARDWARE BRKPNT DRIVER
AH = 40h
BX = handle for character device "TDHDEBUG"
CX = number of bytes to write
DS:DX -> hardware breakpoint command (see below)
Return: CF clear if successful
AX = number of bytes actually written
CF set on error
AX = error code (05h,06h) (see AH=59h)
Note: results are retrieved by reading from the device
SeeAlso: AH=3Fh"Turbo Debug"
Format of hardware breakpoint commands:
Offset Size Description
00h BYTE command code
00h install interrupt vectors
01h get hardware capabilities
02h enable hardware breakpoints
03h disable hardware breakpoints
04h set hardware breakpoint
05h clear hardware breakpoint
06h set I/O base address and reset hardware
07h restore interrupt vectors
---command code 00h---
01h DWORD pointer to Turbo Debugger entry point to be jumped to on
hardware breakpoint; call with CPU state the same as on
the breakpoint except for pushing AX and placing an entry
code (FFh if breakout button or breakpoint handle) in AH
---command code 04h---
01h BYTE breakpoint type
00h memory read
01h memory write
02h memory read/write
03h I/O read
04h I/O write
05h I/O read/write
06h instruction fetch
02h BYTE address matching mode
00h any address
01h equal to test value
02h different from test value
03h above test value
04h below test value
05h below or equal to test value
06h above or equal to test value
07h within inclusive range
08h outside specified range
03h DWORD 32-bit linear low address
07h DWORD 32-bit linear high address
0Bh WORD pass count
0Dh BYTE data size (01h, 02h, or 04h)
0Eh BYTE source of matched bus cycle
01h CPU
02h DMA
03h either
0Fh BYTE data-matching mode
00h match any
01h equal to test value
02h different from test value
03h above test value
04h below test value
05h below or equal to test value
06h above or equal to test value
07h within specified range
08h outside specified range
10h DWORD low data value
14h DWORD high data value
18h DWORD data mask specifying which bits of the data are tested
---command code 05h---
01h BYTE handle of breakpoint to clear (breakpoint returned from command
04h)
---command code 06h---
01h WORD base address of hardware debugger board
----------2140-------------------------------
INT 21 - PC/TCP IPCUST.SYS - WRITE CONFIGURATION DATA
AH = 40h
BX = handle for character device "$IPCUST"
CX = number of bytes to write
DS:DX -> buffer for configuration data (AH=3Fh"IPCUST")
Return: CF clear if successful
AX = number of bytes actually written
CF set on error
AX = error code (05h,06h) (see AH=59h)
Notes: if less than the entire data is read or written, the next read/write
continues where the previous one ended; IOCTL calls AX=4402h and
AX=4403h both reset the location at which the next operation starts
to zero
the data pointer is also reset to zero if the previous read or write
reached or exceeded the end of the data, when the current function
is read and the previous was write, or vice versa
SeeAlso: AH=3Fh"IPCUST",AX=4402h"IPCUST"
----------214000BX0002-----------------------
INT 21 - FARTBELL.EXE - INSTALLATION CHECK
AX = 4000h
BX = 0002h
CX = 0000h
DS:DX = 0000h:0000h
Return: CF clear if installed
AX = CS of resident code
Note: FARTBELL is a joke program by Guenther Thiele which makes various
noises when programs output a bell
SeeAlso: AX=4001h
----------214001BX0002-----------------------
INT 21 - FARTBELL.EXE - FORCE NOISE
AX = 4001h
BX = 0002h
CX = 0000h
DS:DX = 0000h:0000h
Note: FARTBELL is a joke program by Guenther Thiele which makes various
noises when programs output a bell
SeeAlso: AX=4000h
----------2141-------------------------------
INT 21 - DOS 2+ - "UNLINK" - DELETE FILE
AH = 41h
DS:DX -> ASCIZ filename (no wildcards, but see below)
CL = attribute mask for deletion (server call only, see below)
Return: CF clear if successful
AX destroyed (DOS 3.3) AL seems to be drive of deleted file
CF set on error
AX = error code (02h,03h,05h) (see AH=59h)
Notes: (DOS 3.1+) wildcards are allowed if invoked via AX=5D00h, in which case
the filespec must be canonical (as returned by AH=60h), and only
files matching the attribute mask in CL are deleted
DOS does not erase the file's data; it merely becomes inaccessible
because the FAT chain for the file is cleared
deleting a file which is currently open may lead to filesystem
corruption. Unless SHARE is loaded, DOS does not close the handles
referencing the deleted file, thus allowing writes to a nonexistant
file.
under DRDOS and DR Multiuser DOS, this function will fail if the file
is currently open
under the FlashTek X-32 DOS extender, the pointer is in DS:EDX
SeeAlso: AH=13h,AX=4301h,AX=5D00h,AH=60h,AX=F244h,INT 2F/AX=1113h
----------214101DXFFFE-----------------------
INT 21 - SoftLogic Data Guardian - ???
AX = 4101h
DX = FFFEh
Return: AX = 0000h if installed
Note: resident code sets several internal variables on this call
----------2142-------------------------------
INT 21 - DOS 2+ - "LSEEK" - SET CURRENT FILE POSITION
AH = 42h
AL = origin of move
00h start of file
01h current file position
02h end of file
BX = file handle
CX:DX = offset from origin of new file position
Return: CF clear if successful
DX:AX = new file position in bytes from start of file
CF set on error
AX = error code (01h,06h) (see AH=59h)
Notes: for origins 01h and 02h, the pointer may be positioned before the
start of the file; no error is returned in that case, but subsequent
attempts at I/O will produce errors
if the new position is beyond the current end of file, the file will
be extended by the next write (see AH=40h)
SeeAlso: AH=24h,INT 2F/AX=1228h
----------214203-----------------------------
INT 21 - VIRUS - "Shake" - INSTALLATION CHECK
AX = 4203h
Return: AX = 1234h if resident
SeeAlso: AX=3DFFh,AX=4243h
----------214243-----------------------------
INT 21 - VIRUS - "Invader" - INSTALLATION CHECK
AX = 4243h
Return: AX = 5678h if resident
SeeAlso: AX=4203h,AX=4B04h
----------214300-----------------------------
INT 21 - DOS 2+ - GET FILE ATTRIBUTES
AX = 4300h
DS:DX -> ASCIZ filename
Return: CF clear if successful
CX = attributes (see AX=4301h)
AX = CX (DR-DOS 5.0)
CF set on error
AX = error code (01h,02h,03h,05h) (see AH=59h)
Note: under the FlashTek X-32 DOS extender, the filename pointer is in DS:EDX
SeeAlso: AX=4301h,AX=4310h,AH=B6h,INT 2F/AX=110Fh
----------214301-----------------------------
INT 21 - DOS 2+ - "CHMOD" - SET FILE ATTRIBUTES
AX = 4301h
CX = new attributes
bit 7: shareable (Novell NetWare)
6: unused
5: archive
4: directory
3: volume label
execute-only (Novell NetWare)
2: system
1: hidden
0: read-only
DS:DX -> ASCIZ filename
Return: CF clear if successful
AX destroyed
CF set on error
AX = error code (01h,02h,03h,05h) (see AH=59h)
Notes: will not change volume label or directory attribute bits, but will
change the other attribute bits of a directory (the directory
bit must be cleared to successfully change the other attributes of a
directory, but the directory will not be changed to a normal file as
a result)
MSDOS 4.01 reportedly closes the file if it is currently open
for security reasons, the Novell NetWare execute-only bit can never
be cleared; the file must be deleted and recreated
under the FlashTek X-32 DOS extender, the filename pointer is in DS:EDX
SeeAlso: AX=4300h,AX=4311h,INT 2F/AX=110Eh
----------214302-----------------------------
INT 21 - DR-DOS 3.41+ internal - GET ACCESS RIGHTS
AX = 4302h
DS:DX -> ASCIZ pathname
Return: CF clear if successful
CX = access rights
bit 0 owner delete requires password
bit 1 owner execution requires password (FlexOS)
bit 2 owner write requires password
bit 3 owner read requires password
bit 4 group delete requires password
bit 5 group execution requires password (FlexOS)
bit 6 group write requires password
bit 7 group read requires password
bit 8 world delete requires password
bit 9 world execution requires password (FlexOS)
bit 10 world write requires password
bit 11 world read requires password
AX = CX (DR-DOS 5.0)
CF set on error
AX = error code
Desc: Determine which operations the calling program may perform on a
specified file without being required to provide a password.
Notes: this protection scheme has been coordinated on all current Digital
Research/Novell operating systems (DR-DOS 3.41+, DRMDOS 5.x, and
FlexOS 2+)
only FlexOS actually uses the "execution" bits; DR-DOS 3.41+ treats
them as "read" bits.
DR-DOS 3.41-5.x only use bits 0-3. Only DR-DOS 6.0 using a
DRMDOS 5.x security system allowing for users and groups uses bits
4-11.
SeeAlso: AX=4303h
----------214303-----------------------------
INT 21 - DR-DOS 3.41+ internal - SET ACCESS RIGHTS AND PASSWORD
AX = 4303h
CX = access rights
bits 11-0: access rights (see AX=4302h)
bit 15: new password is to be set
DS:DX -> ASCIZ pathname
[DTA] = new password if CX bit 15 is set (blank-padded to 8 characters)
Return: CF clear if successful
CF set on error
AX = error code
Note: if the file is already protected, the old password must be added after
the pathname, separated by a ";"
SeeAlso: AX=4302h,AX=4454h
----------214304-----------------------------
INT 21 - DR-DOS 5.0 internal - GET ???
AX = 4304h
???
Return: CF clear if successful
CX = AX = ???
CF set on error
AX = error code (see AH=59h)
SeeAlso: AX=4305h
----------214305-----------------------------
INT 21 - DR-DOS 5.0 internal - SET ???
AX = 4305h
???
Return: CF clear if successful
CF set on error
AX = error code (see AH=59h)
SeeAlso: AX=4304h
----------214310-----------------------------
INT 21 - Banyan VINES 2.1+ - GET EXTENDED FILE ATTRIBUTES
AX = 4310h
DS:DX -> ASCIZ filename
Return: CF clear if successful
CH = attributes (see AX=4311h)
CF set on error
AX = error code (01h,02h,03h,05h) (see AH=59h)
Note: the filename may be a directory but must be on a VINES file service
SeeAlso: AX=4300h,AX=4311h,AH=B6h,INT 2F/AX=110Fh
----------214311-----------------------------
INT 21 - Banyan VINES 2.1+ - SET EXTENDED FILE ATTRIBUTES
AX = 4311h
CH = new attributes
bit 7: unused
bit 6: shareable
bit 5: execute-only
bits 4-0: unused
DS:DX -> ASCIZ filename
Return: CF clear if successful
CF set on error
AX = error code (01h,02h,03h,05h) (see AH=59h)
Note: the filename may be a directory but must be on a VINES file service
SeeAlso: AX=4301h,AX=4310h,INT 2F/AX=110Eh
----------214400-----------------------------
INT 21 - DOS 2+ - IOCTL - GET DEVICE INFORMATION
AX = 4400h
BX = handle
Return: CF clear if successful
DX = device information word
character device
14: device driver can process IOCTL requests (see AX=4402h)
13: output until busy supported
11: driver supports OPEN/CLOSE calls
7: set (indicates device)
6: EOF on input
5: raw (binary) mode
4: device is special (uses INT 29)
3: clock device
2: NUL device
1: standard output
0: standard input
disk file
15: file is remote (DOS 3+)
14: don't set file date/time on closing (DOS 3+)
11: media not removable
8: (DOS 4+) generate INT 24 if no disk space on write
7: clear (indicates file)
6: file has not been written
5-0: drive number (0 = A:)
AX destroyed
CF set on error
AX = error code (01h,05h,06h) (see AH=59h)
Note: value in DH corresponds to high byte of device driver's attribute word
if handle refers to a character device
SeeAlso: AX=4401h,INT 2F/AX=122Bh
----------214401-----------------------------
INT 21 - DOS 2+ - IOCTL - SET DEVICE INFORMATION
AX = 4401h
BX = handle (must refer to character device)
DX = device information word (see AX=4400h)
(DH must be zero)
Return: CF clear if successful
CF set on error
AX = error code (01h,05h,06h,0Dh) (see AH=59h)
SeeAlso: AX=4400h,INT 2F/AX=122Bh
----------214402-----------------------------
INT 21 - DOS 2+ - IOCTL - READ FROM CHARACTER DEVICE CONTROL CHANNEL
AX = 4402h
BX = file handle referencing character device
CX = number of bytes to read
DS:DX -> buffer
Return: CF clear if successful
AX = number of bytes actually read
CF set on error
AX = error code (01h,05h,06h,0Dh) (see AH=59h)
Note: format of data is driver-specific (see below for some specific cases)
SeeAlso: AX=4400h,AX=4403h,AX=4404h,INT 2F/AX=122Bh
----------214402-----------------------------
INT 21 - Network Driver Interface Spec 2.0.1 - PROTOCOL MANAGER
AX = 4402h
BX = file handle for device "PROTMAN$"
DS:DX -> request block (see below)
CX = 000Eh (size of request block)
Format of request block for GetProtocolManagerInfo:
Offset Size Description
00h WORD 01h
02h WORD returned status (see below)
04h DWORD returned pointer to structure representing parsed user config
08h DWORD unused
0Ch WORD returned BCD version of NDIS on which Protocol Manager is based
Format of request block for RegisterModule:
Offset Size Description
00h WORD 02h
02h WORD returned status (see below)
04h DWORD pointer to module's common characteristics table (see below)
08h DWORD pointer to list of modules to which the module is to be bound
0Ch WORD unused
Format of request block for BindAndStart:
Offset Size Description
00h WORD 03h
02h WORD returned status (see below)
04h DWORD caller's virtual address in FailingModules structure
08h DWORD unused
0Ch WORD unused
Format of request block for GetProtocolManagerLinkage:
Offset Size Description
00h WORD 04h
02h WORD returned status (see below)
04h DWORD returned dispatch point
08h DWORD unused
0Ch WORD returned protocol manager DS
Note: the dispatch point may be called as follows instead of using this IOCTL
STACK: WORD protocol manager DS
DWORD pointer to request block
Return: AX = returned status
STACK popped
Format of request block for GetProtocolIniPath:
Offset Size Description
00h WORD 05h
02h WORD returned status (see below)
04h DWORD pointer to a buffer for the ASCIZ pathname of PROTOCOL.INI
08h DWORD unused
0Ch WORD buffer length
Format of request block for RegisterProtocolManagerInfo:
Offset Size Description
00h WORD 06h
02h WORD returned status (see below)
04h DWORD pointer to structure containing parsed user config file
08h DWORD unused
0Ch WORD length of structure
Format of request block for InitAndRegister:
Offset Size Description
00h WORD 07h
02h WORD returned status (see below)
04h DWORD unused
08h DWORD poitner to ASCIZ name of the module to be prebind initialized
0Ch WORD unused
Format of request block for UnbindAndStop:
Offset Size Description
00h WORD 08h
02h WORD returned status (see below)
04h DWORD failing modules as for BindAndStart
08h DWORD if not 0000h:0000h, pointer to ASCIZ name of module to unbind
if 0000h:0000h, terminate a set of previously dynamically
bound protocol modules
0Ch WORD unused
Format of request block for BindStatus:
Offset Size Description
00h WORD 09h
02h WORD returned status (see below)
04h DWORD must be 0000h:0000h
on return, points to root tree
08h DWORD 0000h:0000h
0Ch WORD unused under DOS
Format of request block for RegisterStatus:
Offset Size Description
00h WORD 0Ah
02h WORD returned status (0000h, 0008h, 002Ch) (see below)
04h DWORD 0000h:0000h
08h DWORD pointer to 16-byte ASCIZ module name
0Ch WORD 0000h
Note: not supported by the 10NET v5.0 PROTMAN$ driver
Values of status code:
0000h success
0001h wait for release--protocol has retained control of the data buffer
0002h request queued
0003h frame not recognized
0004h frame rejected
0005h frame should be forwarded
0006h out of resource
0007h invalid parameter
0008h invalid function
0009h not supported
000Ah hardware error
000Bh transmit error
000Ch unrecognized destination
000Dh buffer too small
0020h already started
0021h binding incomplete
0022h driver not initialized
0023h hardware not found
0024h hardware failure
0025h configuration failure
0026h interrupt conflict
0027h MAC incompatible
0028h initialization failed
0029h no binding
002Ah network may be disconnected
002Bh incompatible OS version
002Ch already registered
002Dh path not found
002Eh insufficient memory
002Fh info not found
00FFh general failure
F000h-FFFFh reserved for vendor-specific codes, treated as general failure
Format of common characteristics table:
Offset Size Description
00h WORD size of table in bytes
02h BYTE NDIS major version
03h BYTE NDIS minor version
04h WORD reserved
06h BYTE module major version
07h BYTE module minor version
08h DWORD module function flag bits
bit 0: binding at upper boundary supported
bit 1: binding at lower boundary supported
bit 2: dynamically bound
bits 3-31 reserved, must be 0
0Ch 16 BYTEs ASCIZ module name
1Ch BYTE upper boundary protocol level
01h Media Access Control
02h Data link
03h network
04h transport
05h session
FFh not specified
1Dh BYTE upper boundary interface type
for MACs: 1 = MAC
for data links and transports: to be defined
for session: 1 = NCB
any level: 0 = private (ISV-defined)
1Eh BYTE lower boundary protocol level
00h physical
01h Media Access Control
02h Data link
03h network
04h transport
05h session
FFh not specified
1Fh BYTE lower boundary interface type
same as offset 1Dh
20h WORD module ID filled in by protocol manager
22h WORD module DS
24h DWORD system request entry point
28h DWORD pointer to service-specific characteristics
0000h:0000h if none
2Ch DWORD pointer to service-specific status
0000h:0000h if none
30h DWORD pointer to upper dispatch table (see below)
0000h:0000h if none
34h DWORD pointer to lower dispatch table (see below)
0000h:0000h if none
38h DWORD reserved, must be 0
3Ch DWORD reserved, must be 0
Note: for compatibility with NDIS 1.x.x, a major version of 00h is
interpreted as 01h
Format of MAC Service-Specific Characteristics Table:
Offset Size Description
00h WORD length of table in bytes
02h 16 BYTEs ASCIZ MAC type name, "802.3", "802.4", "802.5", "802.6", "DIX",
"DIX+802.3", "APPLETALK", "ARCNET", "FDDI", "SDLC", "BSC",
"HDLC", or "ISDN"
12h WORD length of station addresses in bytes
14h 16 BYTEs permanent station address
24h 16 BYTEs current station address
34h DWORD current functional adapter address (00000000h if none)
38h DWORD pointer to multicast address list
3Ch DWORD link speed in bits/sec
40h DWORD service flags
bit 0: supports broadcast
1: supports multicast
2: supports functional/group addressing
3: supports promiscuous mode
4: station address software settable
5: statistics always current
6: supports InitiateDiagnostics
7: supports loopback
8: MAC does primarily ReceiveChain indications instead of
ReceiveLookahead indications
9: supports IBM source routing
10: supports MAC reset
11: supports Open/Close adapter
12: supports interrupt request
13: supports source routing bridge
14: supports GDT virtual addresses (OS/2 version)
15: multiple TransferDatas allowed durign a single
indication
16: MAC normally sets FrameSize = 0 in ReceiveLookahead
17-31: reserved, must be 0
44h WORD maximum frame size which may be both sent and received
46h DWORD total transmit buffer capacity in bytes
4Ah WORD transmit buffer allocation block size in bytes
4Ch DWORD total receive buffer capacity in bytes
50h WORD receive buffer allocation block size in bytes
52h 3 BYTEs IEEE vendor code
55h BYTE vendor adapter code
56h DWORD pointer to ASCIZ vendor adapter description
5Ah WORD IRQ used by adapter
5Ch WORD transmit queue depth
5Eh WORD maximum supported number of data blocks in buffer descriptors
60h N BYTEs vendor-specific info
Format of NetBIOS Service-Specific Characteristics Table
Offset Size Description
00h WORD length of table in bytes
02h 16 BYTEs ASCIZ type name of NetBIOS module
12h WORD NetBIOS module code
14h N BYTEs vendor-specific info
Format of MAC Service-Specific Status Table:
Offset Size Description
00h WORD length of table in bytes
02h DWORD seconds since 0:00 1/1/70 when diagnostics last run
(FFFFFFFFh = never)
06h DWORD MAC status bits
bits 0-2: 000 hardware not installed
001 hardware failed startup diagnostics
010 hardware configuration problem
011 hardware fault
100 operating marginally due to soft faults
101 reserved
110 reserved
111 hardware fully operational
bit 3: MAC bound
4: MAC open
5: diagnostics in progress
6-31: reserved
0Ah WORD current packet filter flags
bit 0: directed/multicast or group/functional
1: broadcast
2: promiscuous
3: all source routing
4-15: reserved, must be zero
0Ch DWORD pointer to media-specific status table or 0000h:0000h
10h DWORD seconds past 0:00 1/1/70 of last ClearStatistics
14h DWORD total frames received (FFFFFFFFh = not counted)
18h DWORD frames with CRC error (FFFFFFFFh = not counted)
1Ch DWORD total bytes received (FFFFFFFFh = not counted)
20h DWORD frames discarded--no buffer space (FFFFFFFFh = not counted)
24h DWORD multicast frames received (FFFFFFFFh = not counted)
28h DWORD broadcast frames received (FFFFFFFFh = not counted)
2Ch DWORD frames with errors (FFFFFFFFh = not counted)
30h DWORD overly large frames (FFFFFFFFh = not counted)
34h DWORD frames less than minimum size (FFFFFFFFh = not counted)
38h DWORD multicast bytes received (FFFFFFFFh = not counted)
3Ch DWORD broadcast bytes received (FFFFFFFFh = not counted)
40h DWORD frames discarded--hardware error (FFFFFFFFh = not counted)
44h DWORD total frames transmitted (FFFFFFFFh = not counted)
48h DWORD total bytes transmitted (FFFFFFFFh = not counted)
4Ch DWORD multicast frames transmitted (FFFFFFFFh = not counted)
50h DWORD broadcast frames transmitted (FFFFFFFFh = not counted)
54h DWORD broadcast bytes transmitted (FFFFFFFFh = not counted)
58h DWORD multicast bytes transmitted (FFFFFFFFh = not counted)
5Ch DWORD frames not transmitted--timeout (FFFFFFFFh = not counted)
60h DWORD frames not transmitted--hardware error (FFFFFFFFh = not countd)
64h N BYTEs vendor-specific info
----------214402-----------------------------
INT 21 U - IBM SYSTEM 36/38 WORKSTATION EMULATION - VDI.SYS - GET ???
AX = 4402h
BX = handle for character device "GDMS"
CX = number of bytes to read (>= 4)
DS:DX -> buffer (see below)
Return: CF set on error
AX = error code (see AH=59h)
CF clear if successful
AX = number of bytes read
Format of returned data:
Offset Size Description
00h 4 BYTEs ???
04h DWORD pointer to ???
08h 4 BYTEs ???
----------214402-----------------------------
INT 21 U - LASTBYTE.SYS v1.19 - IOCTL - GET ??? TABLE
AX = 4402h
BX = handle for device "LA$TBYTE"
CX = 0004h
DS:DX -> DWORD to hold address of 39-byte table of ???
Return: CF set on error
AX = error code (see AH=59h)
CF clear if successful
AX = number of bytes read
Note: LASTBYTE.SYS is part of "The Last Byte" by Key Software Products
SeeAlso: AX=4402h"HIGHUMM"
----------214402-----------------------------
INT 21 - HIGHUMM.SYS v1.17+ - IOCTL - GET API ADDRESS
AX = 4402h
BX = handle for device "KSP$UMM"
CX = 0004h
DS:DX -> DWORD to hold entry point
Return: CF set on error
AX = error code (see AH=59h)
CF clear if successful
AX = number of bytes read
Note: HIGHUMM.SYS is part of "The Last Byte" by Key Software Products
SeeAlso: AX=4402h"LASTBYTE"
Call HIGHUMM.SYS entry point with:
AH = 00h allocate UMB (same as XMS function 10h) (see INT 2F/AX=4310h)
DX = size in paragraphs
Return: BX = segment number (if successful)
DX = size of requested block/size of largest block
AH = 01h deallocate UMB (same as XMS func 11h) (see INT 2F/AX=4310h)
DX = segment number of UMB
AH = 02h request a bank-switched memory block
DX = size in paragraphs
Return: BX = segment number (if successful)
DX = size of requested block/size of largest block
AH = 03h release a bank-switched memory block
DX = segment number
AH = 04h transfer data to/from high memory
DS:SI -> source
ES:DI -> destination
CX = length in bytes
Note: enables bank-switched memory, does the copy, then disables
bank-switched memory
AH = 05h get a word from bank-switched memory
ES:DI -> word to read
Return: DX = word
AH = 06h put a word to bank-switched memory
ES:DI -> word to write
DX = word
AH = 07h put a byte to bank-switched memory
ES:DI -> byte to write
DL = byte
AH = 08h enable bank-switched memory
DS:SI -> 6-byte status save area
AH = 09h disable bank-switched memory
DS:SI -> 6-byte save area from enable call (AH=08h)
AH = 0Ah assign name to UMB or high bank-switched block
DX = segment number
DS:SI -> 8-byte blank-padded name
AH = 0Bh locate UMB block by name
DS:SI -> 8-byte blank-padded name
Return: BX = segment number (if successful)
DX = size of block
AH = 0Ch locate bank-switched block by name
DS:SI -> 8-byte blank-padded name
Return: BX = segment number (if successful)
DX = size of block
Return: AX = status code
0001h successful
0000h failed
BL = error code
80h not implemented
B0h insufficient memory, smaller block available
B1h insufficient memory, no blocks available
B2h invalid segment number
Note: only functions 00h and 01h are always available; the remaining
functions are only enabled if the proper commandline switch is given
----------214402-----------------------------
INT 21 - SMARTDRV.SYS - IOCTL - GET CACHE STATUS
AX = 4402h
BX = file handle for device "SMARTAAR"
CX = number of bytes to read (min 28h)
DS:DX -> buffer for status record (see below)
Return: CF clear if successful
AX = number of bytes actually read
CF set on error
AX = error code (01h,05h,06h,0Dh) (see AH=59h)
SeeAlso: AX=4403h"SMARTDRV",INT 2F/AX=4A10h
Format of SMARTDRV status record:
Offset Size Description
00h BYTE write-through flag (always 01h)
01h BYTE writes should be buffered (always 00h)
02h BYTE cache enabled if 01h
03h BYTE driver type (01h extended memory, 02h expanded)
04h WORD clock ticks between cache flushes (currently unused)
06h BYTE cache contains locked tracks if nonzero
07h BYTE flush cache on INT 19 reboot if nonzero
08h BYTE cache full track writes if nonzero
09h BYTE double buffering (for VDS) state (00h off, 01h on, 02h dynamic)
0Ah DWORD original INT 13 vector
0Eh BYTE minor version number
0Fh BYTE major version number
10h WORD unused
12h WORD sectors read \
14h WORD sectors already in cache > may be scaled rather than
16h WORD sectors already in track buffer / absolute counts
18h BYTE cache hit rate in percent
19h BYTE track buffer hit rate in percent
1Ah WORD total tracks in cache
1Ch WORD number of tracks in use
1Eh WORD number of locked tracks
20h WORD number of dirty tracks
22h WORD current cache size in 16K pages
24h WORD original (maximum) cache size in 16K pages
26h WORD minimum cache size in 16K pages
28h DWORD pointer to byte flag to increment for locking cache contents
----------214402-----------------------------
INT 21 - CD-ROM device driver - IOCTL INPUT
AX = 4402h
BX = file handle referencing character device for CD-ROM driver
CX = number of bytes to read
DS:DX -> control block (see below)
Return: CF clear if successful
AX = number of bytes actually read
CF set on error
AX = error code (01h,05h,06h,0Dh) (see AH=59h)
Note: the data returned depends on the first byte of the control block; the
remainder of the control block is filled by the driver
SeeAlso: AX=4403h"CD-ROM",INT 2F/AX=0802h
Format of control block:
Offset Size Description
00h BYTE data being requested
00h device driver header address
01h drive head location
02h reserved
03h error statistics
04h audio channel info
05h raw drive bytes (uninterpreted and device-specific)
06h device status
07h sector size
08h volume size
09h media change status
0Ah audio disk info
0Bh audio track info
0Ch audio Q-Channel info
0Dh audio sub-channel info
0Eh UPC code
---function 00h---
01h DWORD device driver header address (see also AH=52h)
---function 01h---
01h BYTE addressing mode
00h HSG
01h Red Book
02h DWORD current location of drive's head
logical sector number in HSG mode
frame/second/minute/unused in Red Book mode
(HSG sector = minute * 4500 + second * 75 + frame - 150)
---function 03h---
01h N BYTEs undefined as of 5 Aug 88 specification
---function 04h---
01h BYTE input channel (0-3) for output channel 0
02h BYTE volume for output channel 0
03h BYTE input channel (0-3) for output channel 1
04h BYTE volume for output channel 1
05h BYTE input channel (0-3) for output channel 2
06h BYTE volume for output channel 2
07h BYTE input channel (0-3) for output channel 3
08h BYTE volume for output channel 3
Notes: output channels 0 and 1 are left and right, 2 and 3 are left prime and
right prime; a volume of 00h is off
the default setting is for each input channel to be assigned to the
same-numbered output channel at full (FFh) volume
---function 05h---
01h BYTE number of bytes read
02h 128 BYTEs buffer for drive bytes
---function 06h---
01h DWORD device parameters
bit 0: door open
1: door unlocked
2: supports raw reading in addition to cooked
3: writable
4: can play audio/video tracks
5: supports interleaving
6: reserved
7: supports prefetch requests
8: supports audio channel control
9: supports Red Book addressing in addition to HSG
10: audio is playing
---function 07h---
01h BYTE read mode
00h cooked
01h raw
02h WORD sector size in bytes
---function 08h---
01h DWORD volume size in sectors
---function 09h---
01h BYTE media change status
00h don't know
01h media unchanged
FFh media has been changed
---function 0Ah---
01h BYTE lowest audio track number
02h BYTE highest audio track number
03h DWORD start address of lead-out track (Red Book format)
--function 0Bh---
01h BYTE track number (set by caller)
02h DWORD starting point of track (Red Book format)
06h BYTE track control info
bits 15,14,12: track type (notice: bits not contiguous!)
000 two audio channels, no pre-emphasis
001 two audio channels with pre-emphasis
010 data track
100 four audio channels, no pre-emphasis
101 four audio channels with pre-emphasis
other reserved
bit 13: digital copy permitted
---function 0Ch---
01h BYTE CONTROL and ADR byte (as received from drive)
02h BYTE track number
03h BYTE point or index
04h BYTE minute \
05h BYTE second > running time within track
06h BYTE frame /
07h BYTE zero
08h BYTE "AMIN" or "PMIN" \
09h BYTE "ASEC" or "PSEC" > running time on disk
0Ah BYTE "AFRAME" or "PFRAME" /
---function 0Dh---
01h DWORD starting frame address (Red Book format)
05h DWORD transfer address
09h DWORD number of sectors to read
Note: copies 96 bytes of sub-channel info per sector into buffer
---function 0Eh---
01h BYTE CONTROL and ADR byte
02h 7 BYTEs UPC/EAN code (13 BCD digits,low-order nybble of last byte is 0)
09h BYTE zero
0Ah BYTE "AFRAME"
----------214402-----------------------------
INT 21 U - Quarterdeck - QEMM-386 v5+ - GET API ENTRY POINT
AX = 4402h
BX = file handle for device "QEMM386$"
CX = 0004h
DS:DX -> DWORD buffer for API entry point
Return: CF clear if successful
buffer filled (see INT 67/AH=3Fh for entry point parameters)
CF set on error
AX = error code (01h,05h,06h,0Dh) (see AH=59h)
SeeAlso: AX=4402h"HOOKROM",INT 2F/AX=D201h/BX=5145h,INT 67/AH=3Fh
----------214402-----------------------------
INT 21 U - Quarterdeck - QEMM-386 v6+ - GET ???
AX = 4402h
BX = file handle for device "EMMXXXX0"
CX = 0006h (size of buffer in bytes)
DS:DX -> buffer for ???
first byte must be 01h on entry
Return: CF clear if successful
buffer filled (see INT 67/AH=3Fh function 1B00h)
CF set on error
AX = error code (01h,05h,06h,0Dh) (see AH=59h)
Note: this call always returns an error if Windows3 support has been disabled
with the NW3 switch to QEMM386.SYS
SeeAlso: INT 2F/AX=D201h/BX=5145h,INT 67/AH=3Fh
----------214402-----------------------------
INT 21 U - Quarterdeck - HOOKROM.SYS - GET HOOKED VECTOR TABLE
AX = 4402h
BX = file handle for device "HOOKROM$"
CX = 0004h
DS:DX -> DWORD buffer for address of hooked vector table (see below)
Return: CF clear if successful
DS:DX buffer filled
CF set on error
AX = error code (01h,05h,06h,0Dh) (see AH=59h)
SeeAlso: AX=4402h"QEMM"
Format of hooked vector table entry:
Offset Size Description
00h 5 BYTEs FAR jump to actual interrupt handler
(end of table if first byte is not EAh)
05h BYTE interrupt vector number
----------214402-----------------------------
INT 21 - Advanced SCSI Programming Interface (ASPI) - INTERFACE
AX = 4402h
BX = file handle for device "SCSIMGR$"
CX = 0004h
DS:DX -> buffer for function address
Return: CF clear if successful
AX = 0004h
CF set on error
AX = error code (01h,05h,06h,0Dh) (see AH=59h)
Note: the function address is called with the address of a SCSI Request
Block on the stack and the caller must clean up the stack
SeeAlso: AX=440Ch"ASPITAPE",INT 11/AH=FFh"WD7000"
Format of SCSI Request Block (64 bytes):
Offset Size Description
00h BYTE request number
00h "HA_INQ" host adapter inquiry
01h "GET_TYPE" get device type
02h "EXEC_SIO" execute SCSI I/O
03h "ABORT_SRB" abort SRB
04h "RESET_DEV" reset SCSI device
05h "SET_HAPRMS" set host adapter parameters
01h BYTE request status
00h not done yet
02h aborted
04h SCSI I/O error
80h invalid
81h no adapter
82h no device attached
else status
02h BYTE host adapter ID
03h BYTE request flags
bit 3: ???
04h DWORD reserved
---request 00h---
08h BYTE (returned) number of host adapters
09h BYTE (returned) target adapter ID
0Ah 16 BYTEs (returned) manager ID
1Ah 16 BYTEs (returned) adapter ID
2Ah 16 BYTEs (returned) parameters
---request 01h---
08h BYTE target ID
09h BYTE logical unit number
0Ah BYTE (returned) device type
01h streamer
---request 02h---
08h BYTE target ID
09h BYTE logical unit number
0Ah DWORD data allocation length
0Eh BYTE sense allocation length
0Fh DWORD data buffer pointer
13h DWORD next request pointer (for linking)
17h BYTE CDB length
18h BYTE (returned) host adapter status
11h select timeout
12h data overrun
13h bus error
14h bus failure
19h BYTE (returned) target status
02h sense data stored in SRB
08h target busy
18h reservation error
1Ah DWORD post routine address
1Eh WORD real mode Post DS
20h DWORD SRB pointer
24h WORD reserved
26h DWORD SRB physical address
2Ah 22 BYTEs SCSIMGR$ workspace
40h N BYTEs CCB (20-24 bytes)
---request 04h---
08h BYTE target ID
09h BYTE logical unit number
0Ah 14 BYTEs reserved
18h BYTE (returned) host adapter status (see above)
19h BYTE (returned) target status (see above)
1Ah DWORD post routine address
1Eh 34 BYTEs workspace
Format of CCB:
Offset Size Description
00h BYTE command code
01h rewind
05h get block size limits
08h read
0Ah write
10h write file marks
11h SCSI Space (set position?)
12h SCSI Inquire
19h erase
1Bh load/unload media
01h BYTE flags
bits 4-0: vary by function
bits 7-5: logical unit number
02h BYTE "adr_1"
03h BYTE "adr_0"
04h BYTE length
05h BYTE control
...
06h/0Ah 14 BYTEs buffer for sense data
----------214402-----------------------------
INT 21 U - Qualitas 386MAX v6.00+ - IOCTL INPUT - GET STATE
AX = 4402h
BX = file handle for device "386MAX$$"
CX = 005Ah
DS:DX -> 386MAX state buffer (see below)
Return: CF clear if successful
buffer filled
AX = number of bytes actually copied
CF set on error
AX = error code (01h,05h,06h,0Dh) (see AH=59h)
Notes: the buffer must be one byte larger than the value given in CX; if the
value is less than 5Ah, only a partial state record will be returned
the state is 40h bytes for 386MAX (actually ASTEMM) v2.20 ("386MAX$$"
did not exist yet, use "QMMXXXX0" and then "EMMXXXX0" instead) and
56h bytes for v5.11.
to invoke 386MAX API functions, push DX onto the stack, load DX with
the word at offset 25h in the returned state, load all other
registers as needed for the desired function, and execute an
OUT DX,AL or OUT DX,AX; DX will be set to the pushed value on return
if it is not otherwise modified by the API function.
SeeAlso: AX=4403h"386MAX",INT 67/AH=3Fh
Format of 386MAX v6.01 state:
Offset Size Description
00h BYTE version number of state structure (must be set on entry;
v6.01 returns an error if not 03h)
01h 6 BYTEs signature "386MAX"
07h 4 BYTEs version string "N;NN" (i.e. "6;01" for v6.01)
0Bh WORD segment of low-memory portion of 386MAX.SYS
0Dh 2 BYTEs ???
0Fh WORD segment of ??? memory block or 0000h
11h WORD bit flags
bit 1: ???
bit 2: ???
bit 3: ??? (cleared by calling INT 67 functions)
bit 5: ???
bit 6: 386MAX active???
bit 7: 386MAX is providing EMS services
bit 8: ???
bit 9: ??? (see INT 15/AX=2402h)
bit 10: ???
bit 11: ???
bit 12: ???
bit 13: QPMS has been used
bit 14: ???
bit 15: ???
13h WORD starting address of video memory in K
15h 8 BYTEs ???
1Dh WORD KBytes extended memory used by 386MAX
1Fh 2 BYTEs ???
21h WORD ???
23h WORD IO port to write (OUT DX,AL) to invoke 386MAX INT 15 functions
25h WORD IO port to write (OUT DX,AL) to invoke 386MAX API functions
27h WORD ???
29h 2 BYTEs ???
2Bh DWORD ???
2Fh 4 BYTEs ???
33h WORD system configuration??? flags
bit 1: ROM compressed???
bit 3: ???
bit 5: 386MAX loaded into high memory
bit 11: PC/XT (thus only single 8259 interrupt controller
present, DMA only in 1st megabyte, etc)
35h WORD ??? bit flags
37h 4 BYTEs ???
3Bh WORD segment of first MCB in high memory chain???
3Dh WORD flags
bit 2: no DPMI services
bit 11: don't backfill holes in video memory area
bit 12: don't backfill below video memory???
3Fh WORD flags
bit 7: ???
41h WORD flags
bit 0: Windows3 support enabled
bit 8: ???
43h 2 BYTEs ???
45h WORD amount of memory to report available on INT 15/AH=88h
47h 4 BYTEs ???
4Bh WORD ???
4Dh 2 BYTEs ???
4Fh WORD ???
51h WORD bit flags
bit 12: ???
53h DWORD old INT 21h
57h DWORD pointer to 386MAX's EMS (INT 67h) handler
Format of high memory info record:
Offset Size Description
00h WORD segment address of memory region
02h WORD size of memory region in paragraphs
04h BYTE type or flags???
00h if locked out
02h if EMS page frame
04h if high RAM
42h if ROM
05h BYTE ???
Format of ROM shadowing record:
Offset Size Description
00h WORD segment of ROM???
02h WORD segment of ROM???
04h 2 BYTEs ???
06h WORD size of shadowed ROM in paragraphs
08h 4 BYTEs ???
Values for memory type:
00h unused by EMS
01h DOS
04h page frame overlapping ROM???
80h high memory
84h page frame???
87h video ROM???
Note: the type may be 00h (unused) if the 16K page is split among different
uses (such as ROM and high RAM)
Call 386MAX API (via OUT DX,AL) with:
STACK: WORD value for DX
AH = 01h get high memory information
ES:DI -> buffer for array of high memory info records
(see above)
Return: CX = number of records placed in buffer
AH = 02h get shadowed ROM info???
ES:DI -> buffer for array of ROM shadowing records (see above)
Return: CX = number of records placed in buffer
AH = 03h get 386MAX state
ES:DI -> 90-byte buffer for state (see above)
Return: AH = 00h (successful)
buffer filled
Note: unlike INT 21/AX=4402h"386MAX", this function omits
the first byte specifying the state buffer version
AH = 04h get memory types???
ES:DI -> buffer for memory type info (array of bytes, one per
16K page) (see above)
Return: CX = number of bytes placed in buffer
AH = 05h get ???
AL = subfunction
00h invoke INT 15/AX=2401h first
01h don't invoke INT 15/AX=2401h first
CX = number of bytes to copy (0000h for default)
SI = ???
ES:DI -> buffer for ???
Return: CX = number of bytes actually copied
???
AH = 06h get memory speed info
ES:DI -> buffer for memory speed records (see below)
Return: AH = 00h (successful)
CX = number of bytes placed in buffer
Note: this function can take over a second to execute
AH = 07h ???
???
Return: ???
AH = 08h ???
AL = ??? (00h or nonzero)
AH = 09h toggle ??? flags
BX = bitmask of bits of ??? flags (word at state+11h) to toggle
Return: AH = 00h (successful)
Note: invokes INT 15/AX=2401h first
AH = 0Ah toggle ??? flags
BX = bitmask of bits of ??? (word at state+33h) to toggle
Return: AH = 00h (successful)
Notes: invokes INT 15/AX=2401h first
does ??? if bit 3 on after specified bits are toggled
AH = 0Bh toggle ??? flags
BX = bitmask of bits of ??? (word at state+35h) to toggle
Return: AH = 00h (successful)
Note: invokes INT 15/AX=2401h first
AH = 0Ch toggle ??? flags
BX = bitmask of bits of ??? (word at state+41h) to toggle
Return: AH = 00h (successful)
Note: invokes INT 15/AX=2401h first
AH = 0Dh specify 386MAX high-memory location
BX = segment address of high-memory real-mode portion of 386MAX
???
Return: AH = status (00h successful)
???
AH = 0Eh CRT controller register virtualization
AL = subfunction
00h allow access to CRTC I/O ports 03B4h/03B5h, 03D4h/03D5h
01h trap accesses to CRTC I/O ports
AH = 0Fh reboot system
Return: never
AH = 11h get high memory information
ES:DI -> 96-byte buffer for high memory info
Return: AH = 00h (successful)
ES:DI buffer filled
Notes: each byte in buffer contains bit flags for a 4K page in
the A000h-FFFFh region
bit 0: ???
bit 1: physical address same as linear address
bit 2: EMS page frame
bit 6: ???
this function can take over a second to execute
AH = 12h ???
AL = subfunction
00h ???
01h ???
???
Return: AH = 00h (successful) if AL=00h or 01h
AH = 8Fh otherwise
AH = 13h page protection???
AL = subfunction
00h set all ??? 4K pages to read-only???
01h set all ??? 4K pages to read-write???
???
Return: AH = 00h (successful) if AL=00h or 01h
AH = 8Fh otherwise
AH = 15h ???
???
Return: ???
AH = 16h get 386MAX memory usage screen
ES:DI -> buffer for memory info display
CX = size of buffer in bytes
Return: ES:DI buffer filled with '$'-terminated string (if
large enough to hold entire usage screen)
AH = 17h Windows 3 startup/termination
AL = subfunction
00h Windows3 initializing
DX (on stack) = Windows startup flags
DI = Windows version number (major in upper byte)
ES:BX = 0000h:0000h
DS:SI = 0000h:0000h
Return: CX = 0000h if OK for Windows to load
<> 0 if Windows should not load
ES:BX -> startup info structure
DS:SI -> Virtual86 mode enable/disable callback
01h Windows3 terminating
ES:BX -> ???
DX (on stack) = Windows exit flags
Return: ???
AH = 18h QPMS (Qualitas Protected Memory Services)
AL = subfunction
00h get QPMS configuration
Return: BX = starting segment of QPMS memory window
CX = number of 4K pages reserved for QPMS???
DX = number of 4K pages in QPMS window???
01h map QPMS memory page???
BX = 4K page number within memory reserved for QPMS???
CL = 4K page number within QPMS memory window???
02h mark all QPMS memory read-only
03h mark all QPMS memory read-write
Return: AH = status (00h,8Ah,8Bh,8Fh)
AH = 19h get linear address for physical address
EDX = physical address (low word on stack)
Return: AH = status
00h successful
EDX = linear address at which physical address
may be accessed
8Bh physical address currently not addressable
Note: calls INT 15/AX=2401h first
AH = 1Ah set page table entry???
EDX = new page table entry??? (low word on stack)
ESI = linear address of page???
Return: AH = status (00h,8Bh)
Note: calls INT 15/AX=2401h first
AH = 1Bh get ???
Return: AH = status
BX = ???
CX = ???
EDX = physical address of ???
AH = 1Ch get original interrupt vector
AL = interrupt vector (00h-7Fh)
Return: AH = 00h (successful)
EDX = original vector before 386MAX loaded (segment in
high word, offset in low word)
Note: no range checking is performed; requests for INTs 80h-
FFh will return random values
AH = 1Dh display string???
SI = ???
Return: AH = 00h (successful)
???
AH = 1Eh ???
ES:DI -> ???
???
Return: ???
AH = 1Fh ???
???
Return: AX = 0000h if successful
BX = ??? (0001h for 386MAX v6.01)
CL = ???
DL = ??? (5Ah for 386MAX v6.01)
DH = ??? (00h for 386MAX v6.01)
SI = ???
ES???:DI -> ???
AH = 40h-5Dh EMS services (see INT 67/AH=40h etc)
AH = DEh VCPI services (see INT 67/AX=DE00h etc)
Return: AH = status (as for EMS INT 67 calls)
00h successful
80h internal error
81h hardware malfunction
83h invalid handle
84h undefined function
8Ah invalid logical page nuber
8Bh illegal physical page number
8Fh undefined subfunction
A4h access denied
etc.
STACK popped (value placed in DX if no specific return value for DX)
Format of memory speed record:
Offset Size Description
00h DWORD page table entry for 4K page
04h WORD number of microticks (840ns units) required for REP LODSD of
entire 4K page
----------214402-----------------------------
INT 21 - PGS1600.DEV - IOCTL - GET CONFIGURATION INFO
AX = 4402h
BX = file handle for device "PGS1600$"
CX = 0018h (size of buffer)
DS:DX -> configuration buffer (see below)
Return: CF clear if successful
buffer filled
AX = number of bytes actually copied
CF set on error
AX = error code (01h,05h,06h,0Dh) (see AH=59h)
Note: PGS1600.DEV is a device driver for the Cornerstone Technology PG1600
display adapter, which provides a 1600x1200 monochrome display as
well as one of two emulations, MDA or CGA.
SeeAlso: AX=4403h"PGS1600"
Format of configuration information:
Offset Size Description
00h WORD version (high byte = major, low byte = minor)
02h WORD board initialisation mode
04h WORD board I/O address
03D0h CGA emulation
03B0h MDA emulation
0390h no emulation
0350h no emulation, alternate
06h WORD emulation buffer segment
B800h CGA emulation
B000h MDA emulation
0000h no emulation
08h WORD PG1600 graphics buffer segment
0Ah WORD number of bytes between consecutive graphic rows
0Ch WORD horizontal pixel size
0Eh WORD vertical pixel size
10h WORD horizontal dots per inch
12h WORD vertical dots per inch
14h WORD graphics buffer bits per pixel
16h WORD monitor bits per pixel
----------214402-----------------------------
INT 21 - PC/TCP IPCUST.SYS - RESET CONFIGURATION DATA READ POINTER
AX = 4402h
BX = file handle referencing device "$IPCUST"
CX, DS:DX ignored
Return: CF clear if successful
AX destroyed
CF set on error
AX = error code (01h,05h,06h,0Dh) (see AH=59h)
Note: there are a total of 378h bytes of configuration data for IPCUST.SYS
version 2.05. If less than the entire data is read or written,
the next read/write continues where the previous one ended; this
call and AX=4403h both reset the location at which the next
operation starts to zero
SeeAlso: AH=3Fh"IPCUST",AH=40h"IPCUST",AX=4403h"IPCUST"
----------214402-----------------------------
INT 21 - 10NET v5.0 - 10BEUI.DOS - API
AX = 4402h
BX = file handle referencing device "10BEUI$"
DS:DX -> parameter record (see below)
CX ignored
Return: CF clear if successful
AX destroyed
CF set on error
AX = error code (01h,05h,06h,0Dh) (see AH=59h)
SeeAlso: AX=4402h"10MEMMGR",INT 6F/AH=00h"10NET"
Format of parameter record:
Offset Size Description
00h WORD 000Ah (function number???)
02h WORD ???
04h DWORD pointer to buffer for ???
08h 4 BYTEs ???
0Ch WORD transfer size
----------214402-----------------------------
INT 21 - 10NET v5.0 - 10MEMMGR.SYS - API
AX = 4402h
BX = file handle referencing device "MEMMGR0$"
DS:DX -> 6-byte buffer for interface info (see below)
CX ignored
Return: CF clear if successful
AX destroyed
CF set on error
AX = error code (01h,05h,06h,0Dh) (see AH=59h)
SeeAlso: AX=4402h"10BEUI",INT 6F/AH=00h"10NET"
Format of interface info:
Offset Size Description
00h DWORD address of entry point (see below)
04h WORD version (0500h for v5.00)
Call entry point with:
AL = 01h ???
BX = ???
Return: CF clear if successful
CF set on error
AX = error code
AL = 02h ???
???
AL = 03h ???
???
AL = 04h set/restore memory allocation strategy
BX = subfunction
0000h set strategy
0001h restore strategy
Return: CF clear if successful
CF set on error (if function disabled)
various registers destroyed
AL = other
Return: CF set
AX = 0000h
BL = 01h
----------214403-----------------------------
INT 21 - DOS 2+ - IOCTL - WRITE TO CHARACTER DEVICE CONTROL CHANNEL
AX = 4403h
BX = file handle referencing character device
CX = number of bytes to write
DS:DX -> data to write
Return: CF clear if successful
AX = number of bytes actually written
CF set on error
AX = error code (01h,05h,06h,0Dh) (see AH=59h)
Notes: format of data is driver-specific (see below for some specific cases)
if the file handle refers to "4DOSSTAK", the 4DOS (v2.x-3.03)
KEYSTACK.SYS driver will push the specified characters on the
keyboard stack; similarly for "NDOSSTAK", the NDOS KEYSTACK.SYS
driver will push the characters onto the keyboard stack
SeeAlso: AX=4400h,AX=4402h,AX=4405h,INT 2F/AX=122Bh,INT 2F/AX=D44Dh
SeeAlso: INT 2F/AX=D44Fh
----------214403-----------------------------
INT 21 - SMARTDRV.SYS - IOCTL - CACHE CONTROL
AX = 4403h
BX = handle for device "SMARTAAR"
CX = number of bytes to write
DS:DX -> SMARTDRV control block (see below)
Return: CF clear if successful
AX = number of bytes actually written
= 0000h if control block too small for given command
CF set on error
AX = error code (01h,05h,06h,0Dh) (see AH=59h)
SeeAlso: AX=4402h"SMARTDRV",INT 2F/AX=4A10h
Format of SMARTDRV control block:
Offset Size Description
00h BYTE function code
00h flush cache
01h flush and discard cache
02h disable caching (flushes and discards cache first)
03h enable caching
04h control write caching
05h set flushing tick count
06h lock cache contents
07h unlock cache contents
08h set flush-on-reboot flag
09h unused
0Ah control full-track caching
0Bh reduce cache size
0Ch increase cache size
0Dh set INT 13 chain address
---function 04h---
01h BYTE write caching control action
00h turn off write-through
01h turn on write-through
02h turn off write buffering (also flushes cache)
03h turn on write buffering (also flushes cache)
---function 05h---
01h WORD number of timer ticks between cache flushes
---function 08h---
01h BYTE new flush-on-reboot flag (00h off, 01h on)
---function 0Ah---
01h BYTE full-track writes are
00h not cached
01h cached
---functions 0Bh,0Ch---
01h WORD number of 16K pages by which to increase/reduce cache size
---function 0Dh---
01h DWORD new address to which to chain on INT 13
Note: the previous address is not preserved
----------214403-----------------------------
INT 21 - CD-ROM device driver - IOCTL OUTPUT
AX = 4403h
BX = file handle referencing character device for CD-ROM driver
CX = number of bytes to write
DS:DX -> control block (see below)
Return: CF clear if successful
AX = number of bytes actually written
CF set on error
AX = error code (01h,05h,06h,0Dh) (see AH=59h)
SeeAlso: AX=4402h"CD-ROM",INT 2F/AX=0802h
Format of control block:
Offset Size Description
00h BYTE function code
00h eject disk
01h lock/unlock door
02h reset drive
03h control audio channel
04h write device control string
05h close tray
---functions 00h,02h,05h---
no further fields
---function 01h---
01h BYTE lock function
00h unlock door
01h lock door
---function 03h---
01h BYTE input channel (0-3) for output channel 0
02h BYTE volume for output channel 0
03h BYTE input channel (0-3) for output channel 1
04h BYTE volume for output channel 1
05h BYTE input channel (0-3) for output channel 2
06h BYTE volume for output channel 2
07h BYTE input channel (0-3) for output channel 3
08h BYTE volume for output channel 3
Note: output channels 0 and 1 are left and right, 2 and 3 are left prime and
right prime; a volume of 00h is off
---function 04h---
01h N BYTEs bytes to send directly to the CD-ROM drive without
interpretation
----------214403-----------------------------
INT 21 - Brian Antoine Seagate ST-01 SCSI.SYS - IOCTL - EXECUTE COMMANDS
AX = 4403h
BX = handle for device "SCSITAPE"
CX = number of bytes to write
DS:DX -> SCSITAPE control block (see below)
Return: CF clear if successful
AX = number of bytes actually written
CF set on error
AX = error code (01h,05h,06h,0Dh) (see AH=59h)
SeeAlso: AX=4405h"ST-01",INT 78/AH=10h
Format of SCSITAPE control block:
Offset Size Description
00h WORD command type
'F' Format (argument 1 = interleave, argument 2 = format type)
'E' Erase
'R' Rewind
'L' Load
'N' No Load
'S' Space (argument 1 = count, argument 2 = type)
'M' File Mark (argument 1 = count)
'A' Reassign
02h WORD argument 1
04h WORD argument 2
06h WORD segment of command buffer
08h WORD offset of command buffer
0Ah WORD length of command buffer
----------214403-----------------------------
INT 21 U - AI Architects - OS/x86??? - API
AX = 4403h
BX = handle for device "AIA_OS"
CX = number of bytes to write (ignored)
DS:DX -> 12-byte buffer, first byte is command:
81h installation check
82h get API entry point
84h uninstall
Return: CF clear if successful
AX = number of bytes actually written
CF set on error
AX = error code (01h,05h,06h,0Ch,0Dh) (see AH=59h)
Notes: these functions are only available if the DOS extender was loaded as a
device driver in CONFIG.SYS
called by TKERNEL (a licensed version of AI Architects/Ergo OS/x86)
SeeAlso: INT 2F/AX=FBA1h/BX=0081h,INT 2F/AX=FBA1h/BX=0082h
Format of buffer on return:
Offset Size Description
00h 4 BYTEs signature "IABH"
---if func 81h---
(no additional fields)
---if func 82h---
04h DWORD pointer to API entry point (see INT 2F/AX=FBA1h/BX=0082h)
---if func 84h---
04h WORD success indicator
06h WORD segment of ???
08h WORD segment of ??? memory block to free if nonzero
0Ah WORD segment of ??? memory block to free if nonzero
----------214403-----------------------------
INT 21 U - Qualitas 386MAX v6.01 - SET STATE
AX = 4403h
BX = handle for device "386MAX$$"
CX = number of bytes to copy (up to 5Ah)
DS:DX -> 386MAX state buffer (see AX=4402h"386MAX")
Return: CF clear if successful
AX = number of bytes actually written
CF set on error
AX = error code (01h,05h,06h,0Dh) (see AH=59h)
Note: the first byte of the buffer must be either 01h, 02h, or 03h
(specifying the version of the state record) and the buffer must
contain CX bytes AFTER the initial byte
SeeAlso: AX=4402h"386MAX"
----------214403-----------------------------
INT 21 - PGS1600.DEV - IOCTL - SET CONFIGURATION???
AX = 4403h
BX = file handle for device "PGS1600$"
CX = 0018h (size of buffer)
DS:DX -> configuration buffer (see AX=4402h"PGS1600")
Return: CF clear if successful
AX = number of bytes actually written
CF set on error
AX = error code (01h,05h,06h,0Dh) (see AH=59h)
Note: PGS1600.DEV is a device driver for the Cornerstone Technology PG1600
display adapter, which provides a 1600x1200 monochrome display as
well as one of two emulations, MDA or CGA.
SeeAlso: AX=4402h"PGS1600"
----------214403-----------------------------
INT 21 - PC/TCP IPCUST.SYS - RESET CONFIGURATION DATA READ POINTER
AX = 4403h
BX = file handle referencing device "$IPCUST"
CX, DS:DX ignored
Return: CF clear if successful
AX destroyed
CF set on error
AX = error code (01h,05h,06h,0Dh) (see AH=59h)
Note: there are a total of 378h bytes of configuration data for IPCUST.SYS
version 2.05. If less than the entire data is read or written,
the next read/write continues where the previous one ended; this
call and AX=4402h both reset the location at which the next
operation starts to zero
SeeAlso: AH=3Fh"IPCUST",AH=40h"IPCUST",AX=4402h"IPCUST"
----------214404-----------------------------
INT 21 - DOS 2+ - IOCTL - READ FROM BLOCK DEVICE CONTROL CHANNEL
AX = 4404h
BL = drive number (00h = default, 01h = A:, etc.)
CX = number of bytes to read
DS:DX -> buffer
Return: CF clear if successful
AX = number of bytes actually read
CF set on error
AX = error code (01h,05h,06h,0Dh) (see AH=59h)
Note: format of data is driver-specific
SeeAlso: AX=4402h,AX=4405h,INT 2F/AX=122Bh
----------214404CX0004-----------------------
INT 21 - Stacker - GET DEVICE DRIVER ADDRESS AND SET VOLUME NUMBER
AX = 4404h
CX = 0004h
BL = drive number (00h = default, 01h = A:, etc.)
DS:DX -> DWORD buffer to receive device driver address
Note: In addition to returning the address of the Stacker device driver,
this call also sets the volume number at offset 3Eh in the device
driver (see INT 25/AX=CDCDh)
SeeAlso: INT 25/AX=CDCDh
----------214404-----------------------------
INT 21 - Stacker - GET STACVOL FILE SECTORS
AX = 4404h
BL = drive number (0 is current drive)
CX = byte count (i.e., 200h = 1 sector)
DS:DX -> buffer (see below)
Return: Data Buffer contains the number of sectors requested from the
STACVOL physical file for the drive specified.
Format of stacker buffer:
Offset Size Description
00h WORD 01CDh
02h WORD sector count
04h DWORD number of starting sector
08h DWORD far pointer to Data Buffer
----------214404-----------------------------
INT 21 - DUBLDISK.SYS v2.6 - GET INFO
AX = 4404h
BL = drive number of DoubleDisk drive (00h = default, 01h = A:, etc.)
CX = number of bytes (000Ah-0014h, call ignored otherwise)
DS:DX -> data record (see below)
Return: CF clear if successful
AX = number of bytes read
CF set on error
AX = error code (01h,05h,06h,0Dh) (see AH=59h)
Program: DUBLDISK.SYS is the device driver portion of DoubleDisk, a disk
expander by Vertisoft Systems, Inc.
Note: the installation check consists of scanning memory for the signature
"FAT 2.6 byte:", which is immediately followed by a data table
SeeAlso: AX=440Dh
Format of data record:
Offset Size Description
00h WORD (call) signature 4444h
02h BYTE (call) function
00h ???
01h ???
---function 00h---
02h BYTE (return) ???
03h BYTE (return) ???
---function 01h---
02h WORD (return) 4444h
04h WORD allocation unit size???
06h WORD ???
08h WORD ???
0Ah BYTE ???
Format of signature data table:
Offset Size Description
00h 5 BYTEs ???
05h BYTE first drive number
06h BYTE number of drives
07h ???
----------214405-----------------------------
INT 21 - DOS 2+ - IOCTL - WRITE TO BLOCK DEVICE CONTROL CHANNEL
AX = 4405h
BL = drive number (00h = default, 01h = A:, etc)
CX = number of bytes to write
DS:DX -> data to write
Return: CF clear if successful
AX = number of bytes actually written
CF set on error
AX = error code (01h,05h,06h,0Dh) (see AH=59h)
Note: format of data is driver-specific
SeeAlso: AX=4403h,AX=4404h,INT 2F/AX=122Bh
----------214405-----------------------------
INT 21 - Brian Antoine Seagate ST-01 SCSI.SYS - IOCTL - EXECUTE COMMANDS
AX = 4405h
BX = drive number (00h = default, 01h = A:, etc)
CX = number of bytes to write
DS:DX -> SCSIDISK control block (see AX=4403h"ST-01")
Return: CF clear if successful
AX = number of bytes actually written
CF set on error
AX = error code (01h,05h,06h,0Dh) (see AH=59h)
SeeAlso: AX=4403h"ST-01"
----------214406-----------------------------
INT 21 - DOS 2+ - IOCTL - GET INPUT STATUS
AX = 4406h
BX = file handle
Return: CF clear if successful
AL = input status
00h not ready (device) or at EOF (file)
FFh ready
CF set on error
AX = error code (01h,05h,06h,0Dh) (see AH=59h)
Note: files may not register as being at EOF if positioned there by AH=42h
SeeAlso: AX=4407h,INT 2F/AX=122Bh
----------214407-----------------------------
INT 21 - DOS 2+ - IOCTL - GET OUTPUT STATUS
AX = 4407h
BX = file handle
Return: CF clear if successful
AL = input status
00h not ready
FFh ready
CF set on error
AX = error code (01h,05h,06h,0Dh) (see AH=59h)
Note: for DOS 2+, files are always ready for output, even if the disk is
full or no media is in the drive
SeeAlso: AX=4406h,INT 2F/AX=122Bh
----------214408-----------------------------
INT 21 - DOS 3.0+ - IOCTL - CHECK IF BLOCK DEVICE REMOVABLE
AX = 4408h
BL = drive number (00h = default, 01h = A:, etc)
Return: CF clear if successful
AX = 0000h if removable
= 0001h if fixed
CF set on error
AX = error code (01h,0Fh) (see AH=59h)
SeeAlso: AX=4400h,AX=4409h,INT 2F/AX=122Bh
----------214409-----------------------------
INT 21 - DOS 3.1+ - IOCTL - CHECK IF BLOCK DEVICE REMOTE
AX = 4409h
BL = drive number (00h = default, 01h = A:, etc)
Return: CF clear if successful
DX = device attribute word
bit 15: drive is SUBSTituted
bit 12: drive is remote
bit 9: direct I/O not allowed
CF set on error
AX = error code (01h,0Fh) (see AH=59h)
Note: on local drives, DX bits not listed above are the attribute word from
the device driver header (see AH=52h); for remote drives, the other
bits appear to be undefined
SeeAlso: AX=4400h,AX=4408h,AX=440Ah,INT 2F/AX=122Bh
----------21440A-----------------------------
INT 21 - DOS 3.1+ - IOCTL - CHECK IF HANDLE IS REMOTE
AX = 440Ah
BX = handle
Return: CF clear if successful
DX = attribute word (as stored in SFT)
bit 15: set if remote
bit 14: date/time not set on close
CF set on error
AX = error code (01h,06h) (see AH=59h)
Note: if file is remote, Novell Advanced NetWare 2.0 returns the number of
the file server on which the handle is located in CX
SeeAlso: AX=4400h,AX=4409h,AH=52h,INT 2F/AX=122Bh
----------21440B-----------------------------
INT 21 - DOS 3.1+ - IOCTL - SET SHARING RETRY COUNT
AX = 440Bh
CX = pause between retries (default 1)
DX = number of retries (default 3)
Return: CF clear if successful
CF set on error
AX = error code (01h) (see AH=59h)
Notes: delay is dependent on processor speed (value in CX specifies number of
64K-iteration empty loops to execute)
if DX=0000h on entry, the retry count is left unchanged
SeeAlso: AH=52h,INT 2F/AX=1224h,INT 2F/AX=122Bh
----------21440C-----------------------------
INT 21 - DOS 3.2+ - IOCTL - GENERIC CHARACTER DEVICE REQUEST
AX = 440Ch
BX = device handle
CH = category code
00h unknown (DOS 3.3+)
01h COMn: (DOS 3.3+)
03h CON (DOS 3.3+)
05h LPTn:
9Eh Media Access Control driver (STARLITE)
00h-7Fh reserved for Microsoft
80h-FFh reserved for OEM/user-defined
CL = function
00h MAC driver Bind (STARLITE)
45h set iteration count
4Ah select code page
4Ch start code-page preparation
4Dh end code-page preparation
5Fh set display information (DOS 4.0)
65h get iteration count
6Ah query selected code page
6Bh query prepare list
7Fh get display information (DOS 4.0)
DS:DX -> (DOS) parameter block (see below)
SI = parameter to pass to driver (European MSDOS 4.0, OS/2 comp box)
DI = parameter to pass to driver (European MSDOS 4.0, OS/2 comp box)
Return: CF set on error
AX = error code (see AH=59h)
CF clear if successful
DS:DX -> iteration count if CL=65h
SI = returned value (European MSDOS 4.0, OS/2 comp box)
DI = returned value (European MSDOS 4.0, OS/2 comp box)
DS:DX -> (OS/2 comp box) data block
Note: bit assignments for function code in CL:
bit 7: set to ignore if unsupported, clear to return error
bit 6: set if passed to driver, clear if intercepted by DOS
bit 5: set if queries data from device, clear if sends command
bits 4-0: subfunction
SeeAlso: AX=440Dh,INT 2F/AX=0802h,INT 2F/AX=122Bh,INT 2F/AX=1A01h
Format of parameter block for function 00h:
Offset Size Description
00h 8 BYTEs ASCIZ signature "STARMAC"
08h WORD version
0Ah WORD flags
bit 0: media requires connect or listen request before use
bit 1: network is a LAN (broadcast/multicast supported)
bit 2: point-to-point network
0Ch WORD handle for use with MAC driver's private interface (filled in
by MAC driver)
0Eh WORD context
10h WORD approximate speed in KB/sec (filled in by MAC driver)
12h WORD approximate cost in cents per hour (filled in by MAC driver)
14h WORD maximum packet size in bytes (filled in by MAC driver)
16h WORD addressing format (filled in by MAC driver)
0000h general addressing
0001h Ethernet addressing
0002h Token Ring addressing
0003h Token Bus addressing
18h DWORD Send entry point (filled in by MAC driver)
1Ch DWORD RegisterEventHandler entry point (filled in by MAC driver)
20h DWORD SetPacketFilter entry point (filled in by MAC driver)
24h DWORD UnBind entry point (filled in by MAC driver)
Format of parameter block for function 45h:
Offset Size Description
00h WORD number of times output is attempted before driver assumes
device is busy
Format of parameter block for functions 4Ah and 6Ah:
Offset Size Description
00h WORD length of data
02h WORD code page ID
04h 2N BYTEs DCBS (double byte character set) lead byte range
start/end for each of N ranges (DOS 4.0)
WORD 0000h end of data (DOS 4.0)
Format of parameter block for function 4Dh:
Offset Size Description
00h WORD length of data
02h WORD code page ID
Format of parameter block for function 4Ch:
Offset Size Description
00h WORD flags
DISPLAY.SYS = 0000h
PRINTER.SYS bit 0 clear to prepare downloaded font, set to
prepare cartridge selection
02h WORD length of remainder of parameter block
04h WORD number of code pages following
06h N WORDs code page 1,...,N
Format of parameter block for functions 5Fh and 7Fh:
Offset Size Description
00h BYTE level (0 for DOS 4.x and 5.0)
01h BYTE reserved (0)
02h WORD length of following data (14)
04h WORD control flags
bit 0 set for blink, clear for intensity
bits 1 to 15 reserved
06h BYTE mode type (1=text, 2=graphics)
07h BYTE reserved (0)
08h WORD colors
0 = monochrome
else N bits per pixel
0Ah WORD pixel columns
0Ch WORD pixel rows
0Eh WORD character columns
10h WORD character rows
Format of parameter block for function 6Bh:
Offset Size Description
00h WORD length of following data
02h WORD number of hardware code pages
04h N WORDs hardware code pages 1,...,N
WORD number of prepared code pages
N WORDs prepared code pages 1,...,N
----------21440C-----------------------------
INT 21 - Greg Shenaut ASPITAPE.SYS - INTERFACE
AX = 440Ch
BX = device handle
CH = category code
07h tape (ASPITAPE.SYS)
CL = function
01h "mtop" - perform tape operation
02h "mtget" - get tape status
03h ignore end-of-tape errors
04h enable end-of-tape errors
DS:DX -> parameter block (see below)
Return: CF set on error
AX = error code (see AH=59h)
CF clear if successful
DS:DX -> data block
Notes: This device driver is a simple DOS interface to the Adaptec Advanced
SCSI Programming Interface (ASPI). It provides the following device
names as access to the SCSI tape, 'RMTx' (rewind on close) and
'NRMTx' (NO rewind on close) where x can go from 0 to 3. There may
also be the following names 'MTx' and 'NMTx' which default to 1024
byte blocks. The names may also have a '$' appended to try and make
them unique from file names of 'RMT0' etc.
once opend these devices must be put into RAW mode
SeeAlso: AX=4402h"ASPI"
Format of mtop parameter block:
Offset Size Description
00h WORD operation code
00h "MTWEOF" - write an end-of-file record
01h "MTFSF" - forward space file
02h "MTBSF" - backward space file
03h "MTFSR" - forward space record
04h "MTBSR" - backward space record
05h "MTREW" - rewind
06h "MTOFFL" - rewind and unload
07h "MTNOP" - perform TEST UNIT READY
02h DWORD repetition count
Format of mtget parameter block:
Offset Size Description
00h BYTE ASPI host ID
01h BYTE SCSI target ID
02h BYTE SCSI logical unit number
03h BYTE device parameters
bit 0: drive must use fixed-block read and write
bit 7: drive is an ASPI device
04h BYTE current device state
bit 0: device currently opened in buffered mode
bit 1: drive currently opened in nonbuffered mode
bit 2: rewind drive on last close
bit 3: drive has been written on
bit 4: drive has been read from
bit 5: next read will return 0 bytes
bit 6: EOM will resemble EOF
bit 7: drive may be busy rewinding
05h BYTE unit number within driver
06h WORD fixed block blocksize
08h BYTE last SCSI status
09h BYTE last SCSI sense key
0Ah WORD last SCSI opcode (packed)
bits 0-7: SCSI operation (SCSI packet byte 0)
bits 8-10: SCSI flags (SCSI packet byte 1)
bits 11-12: ASPI "Direction Bits" (ASPI SRB byte 3)
0Ch WORD residual bytes from SCSI opcode
----------21440D-----------------------------
INT 21 - DOS 3.2+ - IOCTL - GENERIC BLOCK DEVICE REQUEST
AX = 440Dh
BL = drive number (00h=default,01h=A:,etc)
CH = category code
08h disk drive
00h-7Fh reserved for Microsoft
80h-FFh reserved for OEM/user-defined
CL = function
40h set device parameters
41h write logical device track
42h format and verify logical device track
46h (DOS 4+) set volume serial number (see also AH=69h)
47h (DOS 4+) set access flag
60h get device parameters
61h read logical device track
62h verify logical device track
66h (DOS 4+) get volume serial number (see also AH=69h)
67h (DOS 4+) get access flag
68h (DOS 5+) sense media type
DS:DX -> (DOS) parameter block (see below)
SI:DI -> (OS/2 comp box) parameter block (see below)
Return: CF set on error
AX = error code (01h,02h) (see AH=59h)
CF clear if successful
DS:DX -> data block if CL=60h or CL=61h
Notes: DOS 4.01 seems to ignore the high byte of the number of directory
entries in the BPB for diskettes.
functions 46h and 66h undocumented in DOS 4.x, documented for DOS 5.0
the DUBLDISK.SYS v2.6 driver only supports minor codes 60h and 67h
SeeAlso: AX=440Ch,AH=69h,INT 2F/AX=0802h,INT 2F/AX=122Bh
Format of parameter block for functions 40h, 60h:
Offset Size Description
00h BYTE special functions
bit 0 set if function to use current BPB, clear if Device
BIOS Parameter Block field contains new default BPB
bit 1 set if function to use track layout fields only
must be clear if CL=60h
bit 2 set if all sectors in track same size (should be set)
bits 3-7 reserved
01h BYTE device type
00h 320K/360K disk
01h 1.2M disk
02h 720K disk
03h single-density 8-inch disk
04h double-density 8-inch disk
05h fixed disk
06h tape drive
07h (DOS 3.3+) 1.44M floppy
08h read/write optical disk
09h (DOS 5.0) 2.88M floppy
0Ah other type of block device
02h WORD device attributes
bit 0 set if nonremovable medium
bit 1 set if door lock ("changeline") supported
bits 2-15 reserved
04h WORD number of cylinders
06h BYTE media type
for 1.2M drive
00h 1.2M disk (default)
01h 320K/360K disk
F8h for DUBLDISK.SYS v2.6 expanded drives
always 00h for other drive types
07h 31 BYTEs device BPB (see AH=53h), bytes after BPB offset 1Eh omitted
26h WORD number of sectors per track (start of track layout field)
not used by function 60h
28h N word pairs: number,size of each sector in track
Format of parameter block for functions 41h, 61h:
Offset Size Description
00h BYTE special functions (reserved, must be zero)
01h WORD number of disk head
03h WORD number of disk cylinder
05h WORD number of first sector to read/write
07h WORD number of sectors
09h DWORD transfer address
Format of parameter block for functions 42h, 62h:
Offset Size Description
00h BYTE reserved, must be zero (DOS <3.2)
bit 0=0: format/verify track
1: format status call (DOS 3.2+)
bits 1-7 reserved, must be zero
on return (DOS 4.x):
bit 0: set if specified tracks, sectors/track supported
bit 1: set if function not supported by BIOS
bit 2: set if specified tracks, sectors/track not supported
bit 3: set if no disk in drive
01h WORD number of disk head
03h WORD number of disk cylinder
Format of parameter block for functions 46h, 66h:
Offset Size Description
00h WORD (call) info level (should be 0000h) !!!
02h DWORD disk serial number (binary)
06h 11 BYTEs volume label or "NO NAME "
11h 8 BYTEs filesystem type "FAT12 " or "FAT16 " (CL=66h only)
Format of parameter block for functions 47h, 67h:
Offset Size Description
00h BYTE special-function field (must be zero)
01h BYTE disk-access flag, nonzero if access allowed by driver
Format of parameter block for function 68h:
Offset Size Description
00h BYTE 01h for default media type, 00h for any other media type
01h BYTE 02h for 720K, 07h for 1.44M, 09h for 2.88M
----------21440E-----------------------------
INT 21 - DOS 3.2+ - IOCTL - GET LOGICAL DRIVE MAP
AX = 440Eh
BL = drive number (00h=default,01h=A:,etc)
Return: CF set on error
AX = error code (01h,0Fh) (see AH=59h)
CF clear if successful
AL = 00h block device has only one logical drive assigned
1..26 the last letter used to reference the drive (1=A:,etc)
SeeAlso: AX=440Fh,INT 2F/AX=122Bh
----------21440F-----------------------------
INT 21 - DOS 3.2+ - IOCTL - SET LOGICAL DRIVE MAP
AX = 440Fh
BL = physical drive number (00h=default,01h=A:,etc))
Return: CF set on error
AX = error code (01h,0Fh) (see AH=59h)
CF clear if successful
drive now responds to next logical drive number
Note: maps logical drives to physical drives, similar to DOS's treatment of
a single physical floppy drive as both A: and B:
SeeAlso: AX=440Eh,INT 2F/AX=122Bh
----------214410-----------------------------
INT 21 - DOS 5.0 - IOCTL - QUERY GENERIC IOCTL CAPABILITY (HANDLE)
AX = 4410h
BX = handle for device
CH = category code (see AX=440Ch)
CL = function code
Return: CF clear if successful
AX = 0000h specified IOCTL function is supported
CF set on error
AL = 01h IOCTL capability not available
Note: a program which wishes to use Generic IOCTL calls beyond those in the
standard DOS 3.2 set may use this call first to see whether a
particular call is supported
SeeAlso: AX=440Ch,AX=440Dh,AX=4411h
----------214410BXFFFF-----------------------
INT 21 U - NewSpace - ENABLE DRIVER
AX = 4410h
BX = FFFFh
Notes: NewSpace is a TSR by Isogon Corporation which automatically compresses
all files as they are written and decompresses them as they are read
compressed files are not accessible unless the driver is enabled
SeeAlso: AX=4411h/BX=FFFFh
----------214411-----------------------------
INT 21 - DOS 5.0 - IOCTL - QUERY GENERIC IOCTL CAPABILITY (DRIVE)
AX = 4411h
BL = drive number
CH = category code (see AX=440Dh)
CL = function code
Return: CF clear if successful
AX = 0000h specified IOCTL function is supported
CF set on error
AL = 01h IOCTL capability not available
Note: a program which wishes to use Generic IOCTL calls beyond those in the
standard DOS 3.2 set may use this call first to see whether a
particular call is supported
SeeAlso: AX=440Ch,AX=440Dh,AX=4410h
----------214411BXFFFF-----------------------
INT 21 U - NewSpace - DISABLE DRIVER
AX = 4411h
BX = FFFFh
Notes: NewSpace is a TSR by Isogon Corporation which automatically compresses
all files as they are written and decompresses them as they are read
compressed files are not accessible unless the driver is enabled
SeeAlso: AX=4410h/BX=FFFFh
----------214412-----------------------------
INT 21 - DR-DOS 5+ - DETERMINE DOS TYPE
AX = 4412h
CF set
Return: CF set if not DR-DOS
AX = error code (see AH=59h)
CF clear if DR-DOS
DX = AX = version code
1060h = ???
1063h = DR-DOS 3.41 ???
1065h = DR-DOS 5.0
1067h = DR-DOS 6.0
Note: this call is identical to AX=4452h
SeeAlso: AX=4452h
----------214412BXFFFF-----------------------
INT 21 U - NewSpace - INSTALLATION CHECK???
AX = 4412h
BX = FFFFh
Return: AX = PSP segment of NewRes (resident driver for NewSpace)
BX:DX -> ???
CX = ???
SeeAlso: AX=4411h/BX=FFFFh
----------214413BXFFFF-----------------------
INT 21 U - NewSpace - GET ???
AX = 4413h
BX = FFFFh
Return: AX = code segment of NewRes (resident driver for NewSpace)
BX = offset of ???
SeeAlso: AX=4412h/BX=FFFFh
----------214414-----------------------------
INT 21 U - DR-DOS 5.0 - SET GLOBAL PASSWORD
AX = 4414h
DS:DX -> password string (blank-padded to 8 characters)
Desc: Specify the master password for accessing files.
Note: this call is identical to AX=4454h
SeeAlso: AX=4454h
----------214414BXFFFF-----------------------
INT 21 U - NewSpace - DEBUGGING DUMP
AX = 4414h
BX = FFFFh
Return: debugging dump written to X:\NEWSPACE.SMP
SeeAlso: AX=4413h/BX=FFFFh,AX=44FFh/BX=FFFFh
----------2144-------------------------------
INT 21 U - DR-DOS 5.0 - HISTORY BUFFER, SHARE, AND HILOAD CONTROL
AH = 44h
AL = 16h to 18h
Note: these subfunctions are identical to AX=4456h to 4458h
SeeAlso: AX=4456h,AX=4457h,AX=4458h
----------214451-----------------------------
INT 21 - Concurrent DOS v3.2+ - INSTALLATION CHECK
AX = 4451h
Return: CF set if not Concurrent DOS
AX = error code (see AH=59h)
CF clear if successful
AH = single-tasking/multitasking nature
10h single-tasking
AL = operating system version ID (see AX=4452h)
14h multitasking
AL = operating system version ID
32h Concurrent PC DOS 3.2
41h Concurrent DOS 4.1
50h Concurrent DOS/XM 5.0 or Concurrent DOS/386 1.1
60h Concurrent DOS/XM 6.0 or Concurrent DOS/386 2.0
62h Concurrent DOS/XM 6.2 or Concurrent DOS/386 3.0
66h DR Multiuser DOS 5.1
Notes: as of Concurrent DOS/XM 5.0 (possibly earlier), the version is stored
in the environment variable VER
use this function if you are looking for multitasking capabilities,
AX=4452h for single-tasking
this function should never return the single-tasking values
SeeAlso: AX=4452h,AX=4459h
----------214452-----------------------------
INT 21 - DR-DOS 3.41+ - DETERMINE DOS TYPE/GET DR-DOS VERSION
AX = 4452h
CF set
Return: CF set if not DR-DOS
AX = error code (see AH=59h)
CF clear if DR-DOS
DX = AX = version code
AH = single-tasking/multitasking
10h single-tasking
AL = operating system version ID
60h DOS Plus
63h DR-DOS 3.41
64h DR-DOS 3.42
65h DR-DOS 5.00
67h DR-DOS 6.00
14h multitasking
AL = operating system version ID (see AX=4451h)
Notes: the DR-DOS version is stored in the environment variable VER
use this function if looking for single-tasking capabilities, AX=4451h
if looking for multitasking; this call should never return multi-
tasking values
SeeAlso: AX=4412h,AX=4451h,AX=4459h
----------214454-----------------------------
INT 21 U - DR-DOS 3.41+ - SET GLOBAL PASSWORD
AX = 4454h
DS:DX -> password string (blank-padded to 8 characters)
Desc: Specify the master password for accessing files.
SeeAlso: AX=4303h,AX=4414h
----------214456-----------------------------
INT 21 U - DR-DOS 5.0+ - HISTORY BUFFER CONTROL
AX = 4456h
DL = flag
bit 0: 1 = command history buffers
0 = set to application
Return: AL = ??? (20h if DL bit 0 set, A0h if clear (DR-DOS 6.0))
Note: This was seen called by COMMAND.COM of DR-DOS 6.0
----------214457-----------------------------
INT 21 U - DR-DOS 5.0+ - SHARE/HILOAD CONTROL
AX = 4457h
DH = subfunction
00h enable/disable SHARE
DL = 00h disable
= 01h enable
else Return: AX = ???
01h get HILOAD status
Return: AX = status
0000h off
0001h on
02h set HILOAD status
DL = new state (00h off, 01h on)
Return: AX = ???
other
Return: AX = ???
Note: This was seen called by COMMAND.COM of DR-DOS 6.0
SeeAlso: AX=4457h/DX=FFFFh
----------214457DXFFFF-----------------------
INT 21 U - DR-DOS 6.0 - GET SHARE STATUS
AX = 4457h
DX = FFFFh
Return: AX = SHARE status
SeeAlso: INT 2F/AX=1000h
----------214458-----------------------------
INT 21 U - DR-DOS 5.0+ internal - GET POINTER TO TABLE OF ???
AX = 4458h
Return: ES:BX -> internal table (see below)
AX = ??? (0B50h for DR-DOS 5.0, 0A56h for DR-DOS 6.0)
SeeAlso: AX=4452h
Format of internal table:
Offset Size Description
00h DWORD pointer to ???
04h 7 BYTEs ???
0Bh WORD K of extended memory at startup
0Dh BYTE number of far jump entry points
0Eh WORD segment containing far jumps to DR-DOS entry points (see below)
---DR-DOS 6.0---
10h WORD (only if kernel loaded in HMA) offset in HMA of first free HMA
memory block (see below) or 0000h if none; segment is FFFFh
12h WORD pointer to segment of environment variables set in CONFIG,
or 0000h if already used
14h WORD (only if kernel loaded in HMA) offset in HMA of first used HMA
memory block (see below) or 0000h if none; segment is FFFFh
Note: the segment used for the DR-DOS 6.0 CONFIG environment variables
(excluding COMSPEC, VER and OS) is only useful for programs/drivers
called from CONFIG.SYS. The word is set to zero later and the area
lost.
Format of jump table for DR-DOS 5.0-6.0:
Offset Size Description
00h 5 BYTEs far jump to entry point corresponding to CP/M CALL 5
05h 5 BYTEs far jump to entry point corresponding to INT 20
0Ah 5 BYTEs far jump to entry point corresponding to INT 21
0Fh 5 BYTEs far jump to entry point corresponding to ???
14h 5 BYTEs far jump to entry point corresponding to ???
19h 5 BYTEs far jump to entry point corresponding to ???
1Eh 5 BYTEs far jump to entry point corresponding to ???
23h 5 BYTEs far jump to entry point corresponding to ???
28h 5 BYTEs far jump to entry point corresponding to ???
2Dh 5 BYTEs far jump to entry point corresponding to ???
32h 5 BYTEs far jump to entry point corresponding to ??? (IRET)
37h 5 BYTEs far jump to entry point corresponding to ??? (IRET)
3Ch 5 BYTEs far jump to entry point corresponding to ??? (IRET)
41h 5 BYTEs far jump to entry point corresponding to ??? (IRET)
46h 5 BYTEs far jump to entry point corresponding to ??? (IRET)
4Bh 5 BYTEs far jump to entry point corresponding to ???
Format of HMA Memory Block (DR-DOS 6.0 kernel loaded in HMA):
Offset Size Description
00h WORD offset of next HMA Memory Block (0000h if last block)
02h WORD size of this block in bytes (at least 10h)
04h BYTE type of HMA Memory Block (interpreted by MEM)
00h system
01h KEYB
02h NLSFUNC
03h SHARE
04h TaskMAX
05h COMMAND
05h var TSR (or system) code and data. DR-DOS TSR's, such as KEYB,
hooks interrupts using segment FFFEh instead FFFFh.
----------214459-----------------------------
INT 21 - DR MultiUser DOS 5.0 - API
AX = 4459h
CL = function (see INT E0"CP/M")
DS,DX = parameters
Notes: DR-DOS 5.0 returns CF set and AX=0001h
this API is also available on INT E0
SeeAlso: AX=4452h,INT E0"CP/M"
----------2144FFBXFFFF-----------------------
INT 21 U - NewSpace - ???
AX = 44FFh
BX = FFFFh
DX = ???
Note: NewSpace is a TSR by Isogon Corporation which automatically compresses
all files as they are written and decompresses them as they are read
SeeAlso: AX=4414h/BX=FFFFh
----------2145-------------------------------
INT 21 - DOS 2+ - "DUP" - DUPLICATE FILE HANDLE
AH = 45h
BX = file handle
Return: CF clear if successful
AX = new handle
CF set on error
AX = error code (04h,06h) (see AH=59h)
Notes: moving file pointer for either handle will also move it for the other,
because both will refer to the same system file table
for DOS versions prior to 3.3, file writes may be forced to disk by
duplicating the file handle and closing the duplicate
SeeAlso: AH=3Dh,AH=46h
----------2146-------------------------------
INT 21 - DOS 2+ - "DUP2", "FORCEDUP" - FORCE DUPLICATE FILE HANDLE
AH = 46h
BX = file handle
CX = file handle to become duplicate of first handle
Return: CF clear if successful
CF set on error
AX = error code (04h,06h) (see AH=59h)
Notes: closes file with handle CX if it is still open
DOS 3.30 hangs if BX=CX on entry
moving file pointer for either handle will also move it for the other,
because both will refer to the same system file table
SeeAlso: AH=3Dh,AH=45h
----------2147-------------------------------
INT 21 - DOS 2+ - "CWD" - GET CURRENT DIRECTORY
AH = 47h
DL = drive number (00h = default, 01h = A:, etc)
DS:SI -> 64-byte buffer for ASCIZ pathname
Return: CF clear if successful
AX = 0100h (undocumented)
CF set on error
AX = error code (0Fh) (see AH=59h)
Notes: the returned path does not include a drive or the initial backslash
many Microsoft products for Windows rely on AX being 0100h on success
under the FlashTek X-32 DOS extender, the buffer pointer is in DS:ESI
SeeAlso: AH=19h,AH=3Bh,INT 15/AX=DE25h
----------2148-------------------------------
INT 21 - DOS 2+ - ALLOCATE MEMORY
AH = 48h
BX = number of paragraphs to allocate
Return: CF clear if successful
AX = segment of allocated block
CF set on error
AX = error code (07h,08h) (see AH=59h)
BX = size of largest available block
Notes: DOS 2.1-5.0 coalesces free blocks while scanning for a block to
allocate
.COM programs are initially allocated the largest available memory
block, and should free some memory with AH=49h before attempting any
allocations
under the FlashTek X-32 DOS extender, EBX contains a protected-mode
near pointer to the allocated block on a successful return
SeeAlso: AH=49h,AH=4Ah,AH=58h,AH=83h
----------2149-------------------------------
INT 21 - DOS 2+ - FREE MEMORY
AH = 49h
ES = segment of block to free
Return: CF clear if successful
CF set on error
AX = error code (07h,09h) (see AH=59h)
Notes: apparently never returns an error 07h, despite official docs; DOS 3.30
code contains only an error 09h exit
DOS 2.1-5.0 does not coalesce adjacent free blocks when a block is
freed, only when a block is allocated or resized
SeeAlso: AH=48h,AH=4Ah
----------214A-------------------------------
INT 21 - DOS 2+ - RESIZE MEMORY BLOCK
AH = 4Ah
BX = new size in paragraphs
ES = segment of block to resize
Return: CF clear if successful
CF set on error
AX = error code (07h,08h,09h) (see AH=59h)
BX = maximum paragraphs available for specified memory block
Notes: under DOS 2.1-5.0, if there is insufficient memory to expand the block
as much as requested, the block will be made as large as possible
DOS 2.1-5.0 coalesces any free blocks immediately following the block
to be resized
SeeAlso: AH=48h,AH=49h,AH=83h
----------214B-------------------------------
INT 21 - DOS 2+ - "EXEC" - LOAD AND/OR EXECUTE PROGRAM
AH = 4Bh
AL = type of load
00h load and execute
01h load but do not execute
03h load overlay
04h load and execute in background (European MSDOS 4.0 only)
"Exec & Go" (see also AH=80h)
DS:DX -> ASCIZ program name (must include extension)
ES:BX -> parameter block (see below)
CX = mode (subfunction 04h only)
0000h child placed in zombie mode after termination
0001h child's return code discarded on termination
Return: CF clear if successful
BX,DX destroyed
if subfunction 01h, process ID set to new program's PSP; get with
INT 21/AH=62h
CF set on error
AX = error code (01h,02h,05h,08h,0Ah,0Bh) (see AH=59h)
Notes: DOS 2.x destroys all registers, including SS:SP
for functions 00h and 01h, the calling process must ensure that there
is enough unallocated memory available; if necessary, by releasing
memory with AH=49h or AH=4Ah
for function 01h, the AX value to be passed to the child program is put
on top of the child's stack
for function 03h, DOS assumes that the overlay is being loaded into
memory allocated by the caller
function 01h was undocumented prior to the release of DOS 5.0
some versions (such as DR-DOS 6.0) check the parameters and parameter
block and return an error if an invalid value (such as an offset of
FFFFh) is found
background programs under European MSDOS 4.0 must use the new
executable format
new executables begin running with the following register values
AX = environment segment
BX = offset of command tail in environment segment
CX = size of automatic data segment (0000h = 64K)
ES,BP = 0000h
DS = automatic data segment
SS:SP = initial stack
the command tail corresponds to an old executable's PSP:0081h and
following, except that the 0Dh is turned into a NUL (00h); new
format executables have no PSP
under the FlashTek X-32 DOS extender, only function 00h is supported
and the pointers are passed in DS:EDX and ES:EBX
BUGS: DOS 2.00 assumes that DS points at the current program's PSP
Load Overlay (subfunction 03h) loads up to 512 bytes too many if the
file contains additional data after the actual overlay
SeeAlso: AX=4B05h,AH=4Ch,AH=4Dh,AH=64h"OS/2",AH=8Ah,INT 2E
Format of EXEC parameter block for AL=00h,01h,04h:
Offset Size Description
00h WORD segment of environment to copy for child process (copy caller's
environment if 0000h)
02h DWORD pointer to command tail to be copied into child's PSP
06h DWORD pointer to first FCB to be copied into child's PSP
0Ah DWORD pointer to second FCB to be copied into child's PSP
0Eh DWORD (AL=01h) will hold subprogram's initial SS:SP on return
12h DWORD (AL=01h) will hold entry point (CS:IP) on return
Format of EXEC parameter block for AL=03h:
Offset Size Description
00h WORD segment at which to load overlay
02h WORD relocation factor to apply to overlay if in .EXE format
Format of EXEC parameter block for FlashTek X-32:
Offset Size Description
00h PWORD 48-bit far pointer to environment string
06h PWORD 48-bit far pointer to command tail string
Format of .EXE file header:
Offset Size Description
00h 2 BYTEs .EXE signature, either "MZ" or "ZM" (5A4Dh or 4D5Ah)
02h WORD number of bytes in last 512-byte page of executable
04h WORD total number of 512-byte pages in executable (includes any
partial last page)
06h WORD number of relocation entries
08h WORD header size in paragraphs
0Ah WORD minimum paragraphs of memory to allocation in addition to
executable's size
0Ch WORD maximum paragraphs to allocate in addition to executable's size
0Eh WORD initial SS relative to start of executable
10h WORD initial SP
12h WORD checksum (one's complement of sum of all words in executable)
14h DWORD initial CS:IP relative to start of executable
18h WORD offset within header of relocation table (40h for New EXE)
1Ah WORD overlay number (normally 0000h = main program)
---new executable---
1Ch 4 BYTEs ???
20h WORD behavior bits
22h 26 BYTEs reserved for additional behavior info
3Ch DWORD offset of new executable header within disk file
---Borland TLINK---
1Ch 2 BYTEs ??? (apparently always 01h 00h)
1Eh BYTE signature FBh
1Fh BYTE TLINK version (major in high nybble, minor in low nybble)
20h 2 BYTEs ??? (v2.0 apparently always 72h 6Ah, v3.0+ seems always 6Ah 72h)
---ARJ self-extracting archive---
1Ch 4 BYTEs signature "RJSX" (older versions, new signature is "aRJsfX" in
the first 1000 bytes of the file)
---LZEXE 0.90 compressed executable---
1Ch 4 BYTEs signature "LZ09"
---LZEXE 0.91 compressed executable---
1Ch 4 BYTEs signature "LZ91"
---PKLITE compressed executable---
1Ch BYTE minor version number
1Dh BYTE (low nybble) major version
(high nybble) 01h if extra compression
1Eh 6 BYTEs signature "PKLITE" (followed by copyright message)
---LHarc 1.x self-extracting archive---
1Ch 4 BYTEs unused???
20h 3 BYTEs jump to start of extraction code
23h 2 BYTEs ???
25h 12 BYTEs signature "LHarc's SFX "
---LHA 2.x self-extracting archive---
1Ch 8 BYTEs ???
24h 10 BYTEs signature "LHa's SFX " (v2.10) or "LHA's SFX " (v2.13)
---TopSpeed C 3.0 CRUNCH compressed file---
1Ch DWORD 018A0001h
20h WORD 1565h
---PKARCK 3.5 self-extracting archive---
1Ch DWORD 00020001h
20h WORD 0700h
---BSA (Soviet archiver) self-extracting archive---
1Ch WORD 000Fh
1Eh BYTE A7h
---LARC self-extracting archive---
1Ch 4 BYTEs ???
20h 11 BYTEs "SFX by LARC "
---LH self-extracting archive---
1Ch 8 BYTEs ???
24h 8 BYTEs "LH's SFX "
---other linkers---
1Ch var optional information
---
N N DWORDs relocation items
Notes: if word at offset 02h is 4, it should be treated as 00h, since pre-1.10
versions of the MS linker set it that way
if both minimum and maximum allocation (offset 0Ah/0Ch) are zero, the
program is loaded as high in memory as possible
the maximum allocation is set to FFFFh by default
Format of new executable header:
Offset Size Description
00h 2 BYTEs "NE" (4Eh 45h) signature
02h 2 BYTEs linker version (major, then minor)
04h WORD offset from start of this header to entry table (see below)
06h WORD length of entry table in bytes
08h DWORD file load CRC (0 in Borland's TPW)
0Ch BYTE program flags
bits 0-1 DGROUP type
0 = none
1 = single shared
2 = multiple (unshared)
3 = (null)
bit 2: global initialization
bit 3: protected mode only
bit 4: 8086 instructions
bit 5: 80286 instructions
bit 6: 80386 instructions
bit 7: 80x87 instructions
0Dh BYTE application flags
bits 0-2: application type
001 full screen (not aware of Windows/P.M. API)
010 compatible with Windows/P.M. API
011 uses Windows/P.M. API
bit 3: is a Family Application (OS/2)
bit 5: 0=executable, 1=errors in image
bit 6: non-conforming program (valid stack is not maintained)
bit 7: DLL or driver rather than application
(SS:SP info invalid, CS:IP points at FAR init routine
called with AX=module handle which returns AX=0000h
on failure, AX nonzero on successful initialization)
0Eh WORD auto data segment index
10h WORD initial local heap size
12h WORD initial stack size (added to data seg, 0000h if SS != DS)
14h DWORD program entry point (CS:IP), "CS" is index into segment table
18h DWORD initial stack pointer (SS:SP), "SS" is segment index
if SS=automatic data segment and SP=0000h, the stack pointer is
set to the top of the automatic data segment, just below the
local heap
1Ch WORD segment count
1Eh WORD module reference count
20h WORD length of nonresident names table in bytes
22h WORD offset from start of this header to segment table (see below)
24h WORD offset from start of this header to resource table
26h WORD offset from start of this header to resident names table
28h WORD offset from start of this header to module reference table
2Ah WORD offset from start of this header to imported names table
(array of counted strings, terminated with a string of length
00h)
2Ch DWORD offset from start of file to nonresident names table
30h WORD count of moveable entry point listed in entry table
32h WORD file alignment size shift count
0 is equivalent to 9 (default 512-byte pages)
34h WORD number of resource table entries
36h BYTE target operating system
00h unknown
01h OS/2
02h Windows
03h European MSDOS 4.x
04h Windows 386
05h BOSS (Borland Operating System Services)
37h BYTE other EXE flags
bit 0: supports long filenames
bit 1: 2.X protected mode
bit 2: 2.X proportional font
bit 3: gangload area
38h WORD offset to return thunks or start of gangload area
3Ah WORD offset to segment reference thunks or length of gangload area
3Ch WORD minimum code swap area size
3Eh 2 BYTEs expected Windows version (minor version first)
Format of Codeview trailer (at end of executable):
Offset Size Description
00h WORD signature 4E42h ('NB')
02h WORD Microsoft debug info version number
04h DWORD Codeview header offset
Format of new executable segment table record:
00h WORD offset in file (shift left by alignment shift to get byte offs)
02h WORD length of image in file (0000h = 64K)
04h WORD attributes
bit 0: data segment rather than code segment
bit 1: unused???
bit 2: real mode
bit 3: iterated
bit 4: movable
bit 5: sharable
bit 6: preloaded rather than demand-loaded
bit 7: execute-only (code) or read-only (data)
bit 8: relocations (directly following code for this segment)
bit 9: debug info present
bits 10,11: 80286 DPL bits
bit 12: discardable
bits 13-15: discard priority
06h WORD number of bytes to allocate for segment (0000h = 64K)
Note: the first segment table entry is entry number 1
Format of new executable entry table item (list):
Offset Size Description
00h BYTE number of entry points (00h if end of entry table list)
01h BYTE segment number (00h if end of entry table list)
02h 3N BYTEs entry records
Offset Size Description
00h BYTE flags
bit 0: exported
bit 1: single data
bits 2-7: unused???
01h WORD offset within segment
Format of new executable relocation data (immediately follows segment image):
Offset Size Description
00h WORD number of relocation items
02h 8N BYTEs relocation items
Offset Size Description
00h BYTE relocation type
00h LOBYTE
02h BASE
03h PTR
05h OFFS
0Bh PTR48
0Dh OFFS32
01h BYTE flags
bit 2: additive
02h WORD offset within segment
04h WORD target address segment
06h WORD target address offset
Format of new executable resource data:
Offset Size Description
00h WORD alignment shift count for resource data
02h N RECORDs resources
Format of resource record:
Offset Size Description
00h WORD type ID
0000h if end of resource records
>= 8000h if integer type
else offset from start of resource table to type string
02h WORD number of resources of this type
04h DWORD reserved for runtime use
08h N Resources (see below)
Note: resource type and name strings are stored immediately following the
resource table, and are not null-terminated
Format of new executable resource entry:
Offset Size Description
00h WORD offset in alignment units from start of file to contents of
the resource data
02h WORD length of resource image in bytes
04h WORD flags
bit 4: moveable
bit 5: shareable
bit 6: preloaded
06h WORD resource ID
>= 8000h if integer resource
else offset from start of resource table to resource string
08h DWORD reserved for runtime use
Notes: resource type and name strings are stored immediately following the
resource table, and are not null-terminated
strings are counted strings, with a string of length 0 indicating the
end of the resource table
Format of new executable module reference table [one bundle of entries]:
Offset Size Description
00h BYTE number of records in this bundle (00h if end of table)
01h BYTE segment indicator
00h unused
FFh movable segment, segment number is in entry
else segment number of fixed segment
02h N RECORDs
Format of segment record
Offset Size Description
00h BYTE flags
bit 0: entry is exported
bit 1: entry uses global (shared) data
bits 7-3: number of parameter words
---fixed segment---
01h WORD offset
---moveable segment---
01h 2 BYTEs INT 3F instruction (CDh 3Fh)
03h BYTE segment number
05h WORD offset
Note: table entries are numbered starting from 1
Format of new executable resident/nonresident name table entry:
Offset Size Description
00h BYTE length of string (00h if end of table)
01h N BYTEs ASCII text of string
N+1 WORD ordinal number (index into entry table)
Notes: the first string in the resident name table is the module name; the
first entry in the nonresident name table is the module description
the strings are case-sensitive; if the executable was linked with
/IGNORECASE, all strings are in uppercase
Format of Linear Executable (enhanced mode executable) header:
Offset Size Description
00h 2 BYTEs "LE" (4Ch 45h) signature
02h BYTE byte order (00h = little-endian, nonzero = big-endian)
03h BYTE word order (00h = little-endian, nonzero = big-endian)
04h DWORD executable format level
08h WORD CPU type (see also INT 15/AH=C9h)
01h Intel 80286 or upwardly compatible
02h Intel 80386 or upwardly compatible
03h Intel 80486 or upwardly compatible
04h Intel 80586 or upwardly compatible
20h Intel i860 (N10) or compatible
21h Intel "N11" or compatible
40h MIPS Mark I (R2000, R3000) or compatible
41h MIPS Mark II (R6000) or compatible
42h MIPS Mark III (R4000) or compatible
0Ah WORD target operating system
01h OS/2
02h Windows
03h European DOS 4.0
04h Windows 386
0Ch DWORD module version
10h DWORD module type
bit 2: initialization (only for DLLs)
0 = global
1 = per-process
bit 4: no internal fixups in executable image
bit 5: no external fixups in executable image
bits 8,9,10:
0 = unknown
1 = incompatible with PM windowing \
2 = compatible with PM windowing > (only for
3 = uses PM windowing API / programs)
bit 13: module not loadable (only for programs)
bit 15: module is DLL rather than program
14h DWORD number of memory pages
18h Initial CS:EIP
DWORD object number
DWORD offset
20h Initial SS:ESP
DWORD object number
DWORD offset
28h DWORD memory page size
2Ch DWORD bytes on last page
30h DWORD fixup section size
34h DWORD fixup section checksum
38h DWORD loader section size
3Ch DWORD loader section checksum
40h DWORD offset of object table (see below)
44h DWORD object table entries
48h DWORD object page map table offset
4CH DWORD object iterate data map offset
50h DWORD resource table offset
54h DWORD resource table entries
58h DWORD resident names table offset
5Ch DWORD entry table offset
60h DWORD module directives table offset
64h DWORD Module Directives entries
68h DWORD Fixup page table offset
6Ch DWORD Fixup record table offset
70h DWORD imported modules name table offset
74h DWORD imported modules count
78h DWORD imported procedures name table offset
7Ch DWORD per-page checksum table offset
80h DWORD data pages offset
84h DWORD preload page count
88h DWORD non-resident names table offset
8Ch DWORD non-resident names table length
90h DWORD non-resident names checksum
94h DWORD automatic data object
98h DWORD debug information offset
9Ch DWORD debug information length
A0h DWORD preload instance pages number
A4h DWORD demand instance pages number
A8h DWORD extra heap allocation
ACh 20 BYTEs reserved
C0h WORD device ID (MS-Windows VxD only)
C2h WORD DDK version (MS-Windows VxD only)
Note: used by EMM386.EXE, QEMM, and Windows 3.0 Enhanced Mode drivers
Format of object table entry:
Offset Size Description
00h DWORD virtual size in bytes
04h DWORD relocation base address
08h DWORD object flags
bit 0: readable
bit 1: writable
bit 2: executable
bit 3: resource
bit 4: discardable
bit 5: shared
bit 6: preloaded
bit 7: invalid
bit 8-9: type
00 normal
01 zero-filled
10 resident
11 resident/contiguous
bit 10: "RESIDENT/LONG_LOCKABLE"
bit 11: reserved
bit 12: "16:16_ALIAS"
bit 13: "BIG" (Huge: 32-bit)
bit 14: conforming
bit 15: "OBJECT_I/O_PRIVILEGE_LEVEL"
bits 16-31: reserved
0Ch DWORD page map index
10h DWORD page map entries
14h 4 BYTEs reserved??? (apparently always zeros)
Format of object page map table entry:
Offset Size Description
00h BYTE ??? (usually 00h)
01h WORD index to fixup table (big-endian)
0000h if no relocation info
03h BYTE type (00h hard copy in file, 03h some relocation needed)
Format of resident names table entry:
Offset Size Description
00h BYTE length of name
01h N BYTEs name
N+1 3 BYTEs ???
Format of linear executable entry table:
Offset Size Description
00h BYTE number of entries in table
01h 10 BYTEs per entry
Offset Size Description
00h BYTE bit flags
bit 0: non-empty bundle
bit 1: 32-bit entry
01h WORD object number
03h BYTE entry type flags
bit 0: exported
bit 1: uses single data rather than instance
bit 2: reserved
bits 3-7: number of stack parameters
04h DWORD offset of entry point
08h 2 BYTEs ???
Note: empty bundles (bit flags at 00h = 00h) are used to skip unused indices,
and do not contain the remaining nine bytes
Format of linear executable fixup record:
Offset Size Description
00h BYTE type
bits 7-4: modifier (0001 single, 0011 multiple)
bits 3-0: type
0000 byte offset
0010 word segment
0011 16-bit far pointer (DWORD)
0101 16-bit offset
0110 32-bit far pointer (PWORD)
0111 32-bit offset
1000 near call or jump, WORD/DWORD based on seg attrib
01h BYTE fixup type
bit 7: ordinal is BYTE rather than WORD
bit 5: addition with DWORD rather than WORD
bit 4: reloation info has size with new two bytes at end
bit 2: set of add to destination, clear to replace destination
bits 1-0: type
00 internal fixup
01 external fixup, imported by ordinal
10 external fixup, imported by name
---if single type---
02h WORD offset within page
04h relocation information
---internal fixup---
BYTE object number
---external,ordinal---
BYTE one-based module number in Import Module table
BYTE/WORD ordinal number
WORD/DWORD value to add (only present if modifier bit 4 set)
---external,name---
BYTE one-based module number in Import Module table
WORD offset in Import Procedure names
WORD/DWORD value to add (only present if modifier bit 4 set)
---if multiple type---
02h BYTE number of items
03h var relocation info as for "single" type (see above)
N WORDs offsets of items to relocate
Format of Borland debugging information header (following load image):
Offset Size Description
00h WORD signature 52FBh
02h WORD version ID
04h DWORD size of name pool in bytes
08h WORD number of names in namem pool
0Ah WORD number of type entries
0Ch WORD number of structure members
0Eh WORD number of symbols
10h WORD number of global symbols
12h WORD number of modules
14h WORD number of locals (optional)
16h WORD number of scopes in table
18h WORD number of line-number entries
1Ah WORD number of include files
1Ch WORD number of segment records
1Eh WORD number of segment/file correlations
20h DWORD size of load image after removing uninitialized data and debug
info
24h DWORD debugger hook; pointer into debugged program whose meaning
depends on program flags
28h BYTE program flags
bit 0: case-sensitive link
bit 1: pascal overlay program
29h WORD no longer used
2Bh WORD size of data pool in bytes
2Dh BYTE padding
2Eh WORD size of following header extension (currently 00h, 10h, or 20h)
30h WORD number of classes
32h WORD number of parents
34h WORD number of global classes (currently unused)
36h WORD number of overloads (currently unused)
38h WORD number of scope classes
3Ah WORD number of module classes
3Ch WORD number of coverage offsets
3Eh DWORD offset relative to symbol base of name pool
42h WORD number of browser information records
44h WORD number of optimized symbol records
46h WORD debugging flags
48h 8 BYTEs padding
Note: additional information on the Borland debugging info may be found in
Borland's Open Architecture Handbook
----------214B-------------------------------
INT 21 - ELRES v1.0 only - INSTALLATION CHECK
AH = 4Bh
DS:DX = 0000h:0000h
Return: ES:BX -> ELRES history structure (see AH=2Bh/CX=454Ch)
DX = DABEh (signature, DAve BEnnett)
Note: ELRES is an MSDOS return code (errorlevel) recorder by David H. Bennett
SeeAlso: AH=2Bh/CX=454Ch
----------214B04-----------------------------
INT 21 - VIRUS - "MG", "699"/"Thirteen Minutes" - INSTALLATION CHECK
AX = 4B04h
Return: CF clear if "MG" resident
AX = 044Bh if "699"/"Thirteen Minutes" resident
SeeAlso: AX=4243h,AX=4B25h
----------214B05-----------------------------
INT 21 - DOS 5.0 - SET EXECUTION STATE
AX = 4B05h
DS:DX -> execution state structure (see below)
Return: CF clear if successful
AX = 0000h
CF set on error
AX = error code (see AH=59h)
Note: used by programs which intercept AX=4B00h to prepare new programs for
execution (including setting the DOS version number). No DOS, BIOS
or other software interrupt may be called after return from this call
before commencement of the child process. If DOS is running in the
HMA, A20 is turned off on return from this call.
SeeAlso: AH=4Bh
Format of execution state structure:
Offset Size Description
00h WORD reserved (00h)
02h WORD type flags
bit 0: program is an .EXE
1: program is an overlay
04h DWORD pointer to ASCIZ name of program file
08h WORD PSP segment of new program
0Ah DWORD starting CS:IP of new program
0Eh DWORD program size including PSP
----------214B25-----------------------------
INT 21 - VIRUS - "1063"/"Mono" - INSTALLATION CHECK
AX = 4B25h
Return: DI = 1234h if resident
SeeAlso: AX=4B04h,AX=4B40h
----------214B40-----------------------------
INT 21 - VIRUS - "Plastique"/"AntiCad" - INSTALLATION CHECK
AX = 4B40h
Return: AX = 5678h if resident
SeeAlso: AX=4B25h,AX=4B41h,AX=4B4Ah
----------214B41-----------------------------
INT 21 - VIRUS - "Plastique"/"AntiCad" - ???
AX = 4B41h
???
Return: ???
SeeAlso: AX=4B40h
----------214B4A-----------------------------
INT 21 - VIRUS - "Jabberwocky" - INSTALLATION CHECK
AX = 4B4Ah
Return: AL = 57h if resident
SeeAlso: AX=4B40h,AX=4B4Bh
----------214B4B-----------------------------
INT 21 - VIRUS - "Horse-2" - INSTALLATION CHECK
AX = 4B4Bh
Return: CF clear if resident
SeeAlso: AX=4B4Ah,AX=4B4Dh
----------214B4D-----------------------------
INT 21 - VIRUS - "Murphy-2", "Patricia"/"Smack" - INSTALLATION CHECK
AX = 4B4Dh
Return: CF clear if resident
SeeAlso: AX=4B4Ah,AX=4B50h
----------214B50-----------------------------
INT 21 - VIRUS - "Plastique-2576"/"AntiCad-2576" - INSTALLATION CHECK
AX = 4B50h
Return: AX = 1234h if resident
SeeAlso: AX=4B4Dh,AX=4B53h,AX=4B60h
----------214B53-----------------------------
INT 21 - VIRUS - "Horse" - INSTALLATION CHECK
AX = 4B53h
Return: CF clear if resident
SeeAlso: AX=4B50h,AX=4B55h
----------214B55-----------------------------
INT 21 - VIRUS - "Sparse" - INSTALLATION CHECK
AX = 4B55h
Return: AX = 1231h if resident
SeeAlso: AX=4B53h,AX=4B59h
----------214B59-----------------------------
INT 21 - VIRUS - "Murphy-1", "Murphy-4" - INSTALLATION CHECK
AX = 4B59h
Return: CF clear if resident
SeeAlso: AX=4B50h,AX=4B5Eh
----------214B5E-----------------------------
INT 21 - VIRUS - "Brothers" - INSTALLATION CHECK
AX = 4B5Eh
Return: CF clear if resident
SeeAlso: AX=4B59h,AX=4B87h
----------214B60-----------------------------
INT 21 - VIRUS - "Plastique-2576"/"AntiCad-2576" - ???
AX = 4B60h
???
Return: ???
SeeAlso: AX=4B50h
----------214B87-----------------------------
INT 21 - VIRUS - "Shirley" - INSTALLATION CHECK
AX = 4B87h
Return: AX = 6663h if resident
SeeAlso: AX=4B5Eh,AX=4B95h
----------214B95-----------------------------
INT 21 - VIRUS - "Zherkov-1882" - INSTALLATION CHECK
AX = 4B95h
Return: AX = 1973h if resident
SeeAlso: AX=4B87h,AX=4BA7h
----------214BA7-----------------------------
INT 21 - VIRUS - "1876"/"Dash-em" - INSTALLATION CHECK
AX = 4BA7h
Return: AX = B459h if resident
SeeAlso: AX=4B95h,AX=4BAAh
----------214BAA-----------------------------
INT 21 - VIRUS - "Nomenklatura" - INSTALLATION CHECK
AX = 4BAAh
Return: CF clear if resident
SeeAlso: AX=4BA7h,AX=4BAFh
----------214BAF-----------------------------
INT 21 - VIRUS - "948"/"Screenplus1", "Magnitogorsk" - INSTALLATION CHECK
AX = 4BAFh
Return: AL = AFh if "Magnitogorsk" resident
AL = FAh if "948"/"Screenplus1" resident
SeeAlso: AX=4BAAh,AX=4BDDh
----------214BDD-----------------------------
INT 21 - VIRUS - "Lozinsky"/"Zherkov" - INSTALLATION CHECK
AX = 4BDDh
Return: AX = 1234h
SeeAlso: AX=4BAFh,AX=4BFEh
----------214BEE-----------------------------
INT 21 - F-DRIVER.SYS v1.14+ - GRAB INT 21
AX = 4BEEh
Return: AX = 1234h if grab successful
= 2345h if failed (INT 21 grabbed previously)
Notes: F-DRIVER.SYS is part of the F-PROT virus/trojan protection package by
Fridrik Skulason
when called the first time, this function moves the INT 21 monitoring
code from its original location in the INT 21 chain to be the first
thing called by INT 21. This is the mechanism used by F-NET.
SeeAlso: INT 2F/AX=4653h
----------214BF0-----------------------------
INT 21 - DIET v1.10+ (Overlay Mode) - INSTALLATION CHECK
AX = 4BF0h
Return: CF clear if installed
AX = 899Dh
Note: DIET is an executable-compression program
SeeAlso: AX=4BF1h
----------214BF1-----------------------------
INT 21 - DIET v1.10+ (Overlay Mode) - EXPAND PROGRAM???
AX = 4BF1h
Return: ???
SeeAlso: AX=4BF0h
----------214BFE-----------------------------
INT 21 - VIRUS - "Hitchcock", "Dark Avenger-1028", "1193" - INSTALLATION CHECK
AX = 4BFEh
Return: AX = 1234h if "Hitchcock" resident
AX = ABCDh if "1193"/"Copyright" resident
DI = 55BBh if "Dark Avenger-1028" resident
SeeAlso: AX=4BDDh,AX=4BFFh"Justice"
----------214BFF-----------------------------
INT 21 - VIRUS - "USSR-707", "Justice", "Europe 92" - INSTALLATION CHECK
AX = 4BFFh
Return: BL = FFh if "USSR-707" resident
DI = 55AAh if "Justice" resident
CF clear if "Europe 92" resident
SeeAlso: AX=4BFEh,AX=4BFFh"Cascade",AX=5252h
----------214BFFSI0000-----------------------
INT 21 - VIRUS - "Cascade" - INSTALLATION CHECK
AX = 4BFFh
SI = 0000h
DI = 0000h
Return: DI = 55AAh if installed
SeeAlso: AX=4BFFh"Justice",AX=5252h
----------214C-------------------------------
INT 21 - DOS 2+ - "EXIT" - TERMINATE WITH RETURN CODE
AH = 4Ch
AL = return code
Return: never returns
Notes: unless the process is its own parent (see AH=26h, offset 16h in PSP),
all open files are closed and all memory belonging to the process
is freed
all network file locks should be removed before calling this function
SeeAlso: AH=00h,AH=26h,AH=4Bh,AH=4Dh,INT 15/AH=12h/BH=02h,INT 20,INT 22
SeeAlso: INT 60/DI=0601h
----------214D-------------------------------
INT 21 - DOS 2+ - GET RETURN CODE
AH = 4Dh
Return: AH = termination type
00h normal (INT 20,INT 21/AH=00h, or INT 21/AH=4Ch)
01h control-C abort
02h critical error abort
03h terminate and stay resident (INT 21/AH=31h or INT 27)
AL = return code
Notes: the word in which DOS stores the return code is cleared after being
read by this function, so the return code can only be retrieved once
this call should not be used if the child was started with AX=4B04h;
use AH=8Ah instead
the following sequence will close a Virtual DOS Machine under OS/2 2.0:
MOV AH,4Dh
INT 21h
HLT
DB 02h,0FDh
This sequence is the only way to close a specific VDM which was
booted from floppy or a disk image.
SeeAlso: AH=4Bh,AH=4Ch,AH=8Ah
----------214E-------------------------------
INT 21 - DOS 2+ - "FINDFIRST" - FIND FIRST MATCHING FILE
AH = 4Eh
AL = special flag for use by APPEND (see note below)
CX = file attribute mask (see AX=4301h) (bits 0 and 5 ignored)
DS:DX -> ASCIZ file specification (may include path and wildcards)
Return: CF clear if successful
[DTA] = FindFirst data block (see below)
CF set on error
AX = error code (02h,03h,12h) (see AH=59h)
Notes: for search attributes other than 08h, all files with at MOST the
specified combination of hidden, system, and directory attributes
will be returned. Under DOS 2.x, searching for attribute 08h
(volume label) will also return normal files, while under DOS 3+
only the volume label (if any) will be returned.
this call also returns successfully if given the name of a character
device without wildcards. DOS 2.x returns attribute 00h, size 0,
and the current date and time. DOS 3+ returns attribute 40h and the
current date and time.
immediately after an INT 2F/AX=B711h (APPEND return found name), the
name at DS:DX will be overwritten; if AL=00h on entry, the actual
found pathname will be stored, otherwise, the actual found path
will be prepended to the original filespec without a path.
under LANtastic, this call may be used to obtain a list of a server's
shared resources by searching for "\\SERVER\*.*"; a list of printer
resources may be obtained by searching for "\\SERVER\@*.*"
under the FlashTek X-32 DOS extender, the filespec pointer is in DS:EDX
BUG: under DOS 3.x and 4.x, the second and subsequent calls to this function
with a character device name (no wildcards) and search attributes
which include the volume-label bit (08h) will fail unless there is
an intervening DOS call which implicitly or explicity performs a
directory search without the volume-label bit. Such implicit
searches are performed by CREATE (AH=3Ch), OPEN (AH=3Dh), UNLINK
(AH=41h), and RENAME (AH=56h)
SeeAlso: AH=11h,AH=4Fh,AX=4301h,INT 2F/AX=111Bh,INT 2F/AX=B711h
Format of FindFirst data block:
Offset Size Description
---PCDOS 3.10, PCDOS 4.01, MSDOS 3.2/3.3/5.0---
00h BYTE drive letter (bits 0-6), remote if bit 7 set
01h 11 BYTEs search template
0Ch BYTE search attributes
---DOS 2.x (and some DOS 3.x???)---
00h BYTE search attributes
01h BYTE drive letter
02h 11 BYTEs search template
---WILDUNIX.COM---
00h 12 BYTEs 15-character wildcard search pattern and drive letter (packed)
0Ch BYTE search attributes
---DOS 2.x and most 3.x---
0Dh WORD entry count within directory
0Fh DWORD pointer to DTA???
13h WORD cluster number of start of parent directory
---PCDOS 4.01, MSDOS 3.2/3.3/5.0---
0Dh WORD entry count within directory
0Fh WORD cluster number of start of parent directory
11h 4 BYTEs reserved
---all versions, documented fields---
15h BYTE attribute of file found
16h WORD file time
bits 11-15: hour
bits 5-10: minute
bits 0-4: seconds/2
18h WORD file date
bits 9-15: year-1980
bits 5-8: month
bits 0-4: day
1Ah DWORD file size
1Eh 13 BYTEs ASCIZ filename+extension
----------214E-------------------------------
INT 21 - WILDUNIX.COM internal - INSTALLATION CHECK
AH = 4Eh
DS:DX = 0000h:0000h
Return: AH = 99h if installed
Note: WILDUNIX.COM is a resident Unix-style wildcard expander by Steve
Hosgood and Terry Barnaby
----------214F-------------------------------
INT 21 - DOS 2+ - "FINDNEXT" - FIND NEXT MATCHING FILE
AH = 4Fh
[DTA] = data block from previous FindFirst or FindNext call
Return: CF clear if successful
CF set on error
AX = error code (12h) (see AH=59h)
SeeAlso: AH=12h,AH=4Eh
----------2150-------------------------------
INT 21 - DOS 2+ internal - SET CURRENT PROCESS ID (SET PSP ADDRESS)
AH = 50h
BX = segment of PSP for new process
Notes: DOS uses the current PSP address to determine which processes own files
and memory; it corresponds to process identifiers used by other OSs
under DOS 2.x, this function cannot be invoked inside an INT 28h
handler without setting the Critical Error flag
under DOS 3+, this function does not use any of the DOS-internal stacks
and may thus be called at any time, even during another INT 21h call
some Microsoft applications use segments of 0000h and FFFFh; although
one should only call this function with valid PSP addresses, any
program hooking it should be prepared to handle invalid addresses
supported by OS/2 compatibility box
this call was undocumented prior to the release of DOS 5.0
SeeAlso: AH=26h,AH=51h,AH=62h
----------2151-------------------------------
INT 21 - DOS 2+ internal - GET CURRENT PROCESS ID (GET PSP ADDRESS)
AH = 51h
Return: BX = segment of PSP for current process
Notes: DOS uses the current PSP address to determine which processes own files
and memory; it corresponds to process identifiers used by other OSs
under DOS 2.x, this function cannot be invoked inside an INT 28h
handler without setting the Critical Error flag
under DOS 3+, this function does not use any of the DOS-internal stacks
and may thus be called at any time, even during another INT 21h call
supported by OS/2 compatibility box
identical to the documented AH=62h
undocumented for DOS 2.x-4.x, but newly documented for 5.0.
SeeAlso: AH=26h,AH=50h,AH=62h
----------2152-------------------------------
INT 21 U - DOS 2+ internal - "SYSVARS" - GET LIST OF LISTS
AH = 52h
Return: ES:BX -> DOS list of lists
Note: partially supported by OS/2 v1.1 compatibility box (however, most
pointers are FFFFh:FFFFh, LASTDRIVE is FFh, and the NUL header "next"
pointer is FFFFh:FFFFh).
Format of List of Lists:
Offset Size Description
-12 WORD (DOS 3.1+) sharing retry count (see AX=440Bh)
-10 WORD (DOS 3.1+) sharing retry delay (see AX=440Bh)
-8 DWORD (DOS 3+) pointer to current disk buffer
-4 WORD (DOS 3+) pointer in DOS code segment of unread CON input
when CON is read via a handle, DOS reads an entire line,
and returns the requested portion, buffering the rest
for the next read. 0000h indicates no unread input
-2 WORD segment of first memory control block
00h DWORD pointer to first Drive Parameter Block (see AH=32h)
04h DWORD pointer to first System File Table (see below)
08h DWORD pointer to active CLOCK$ device's header
0Ch DWORD pointer to active CON device's header
---DOS 2.x---
10h BYTE number of logical drives in system
11h WORD maximum bytes/block of any block device
13h DWORD pointer to first disk buffer (see below)
17h 18 BYTEs actual NUL device driver header (not a pointer!)
NUL is always the first device on DOS's linked list of device
drivers. (see below)
---DOS 3.0---
10h BYTE number of block devices
11h WORD maximum bytes/block of any block device
13h DWORD pointer to first disk buffer (see below)
17h DWORD pointer to array of current directory structures (see below)
1Bh BYTE value of LASTDRIVE command in CONFIG.SYS (default 5)
1Ch DWORD pointer to STRING= workspace area
20h WORD size of STRING area (the x in STRING=x from CONFIG.SYS)
22h DWORD pointer to FCB table
26h WORD the y in FCBS=x,y from CONFIG.SYS
28h 18 BYTEs actual NUL device driver header (not a pointer!)
NUL is always the first device on DOS's linked list of device
drivers. (see below)
---DOS 3.1-3.3---
10h WORD maximum bytes per sector of any block device
12h DWORD pointer to first disk buffer in buffer chain (see below)
16h DWORD pointer to array of current directory structures (see below)
1Ah DWORD pointer to system FCB tables (see below)
1Eh WORD number of protected FCBs (the y in the CONFIG.SYS FCBS=x,y)
20h BYTE number of block devices installed
21h BYTE number of available drive letters (largest of 5, installed
block devices, and CONFIG.SYS LASTDRIVE=). Also size of
current directory structure array.
22h 18 BYTEs actual NUL device driver header (not a pointer!)
NUL is always the first device on DOS's linked list of device
drivers. (see below)
34h BYTE number of JOIN'ed drives
---DOS 4.x---
10h WORD maximum bytes per sector of any block device
12h DWORD pointer to disk buffer info record (see below)
16h DWORD pointer to array of current directory structures (see below)
1Ah DWORD pointer to system FCB tables (see below)
1Eh WORD number of protected FCBs (the y in the CONFIG.SYS FCBS=x,y)
(always 00h for DOS 5.0)
20h BYTE number of block devices installed
21h BYTE number of available drive letters (largest of 5, installed
block devices, and CONFIG.SYS LASTDRIVE=). Also size of
current directory structure array.
22h 18 BYTEs actual NUL device driver header (not a pointer!)
NUL is always the first device on DOS's linked list of device
drivers. (see below)
34h BYTE number of JOIN'ed drives???
35h WORD pointer within IBMDOS code segment to list of special program
names (see below)
(always 0000h for DOS 5.0)
37h DWORD pointer to FAR routine for resident IFS utility functions
(see below)
may be called by any IFS driver which does not wish to
service functions 20h or 24h-28h itself
3Bh DWORD pointer to chain of IFS (installable file system) drivers
3Fh WORD the x in BUFFERS x,y (rounded up to multiple of 30 if in EMS)
41h WORD the y in BUFFERS x,y
43h BYTE boot drive (1=A:)
44h BYTE 01h if 80386+, 00h otherwise???
45h WORD extended memory size in K
---DOS 5.0---
10h 39 BYTEs as for DOS 4.x (see above)
37h DWORD pointer to SETVER program list or 0000h:0000h
3Bh WORD ??? pointer to function in DOS CS
3Dh WORD ??? apparently 0000h if DOS loaded low, PSP of most-recently
EXECed program if DOS in HMA
3Fh 8 BYTEs as for DOS 4.x (see above)
Format of memory control block (see also below):
Offset Size Description
00h BYTE block type: 5Ah if last block in chain, otherwise 4Dh
01h WORD PSP segment of owner or
0000h if free
0006h if DR-DOS XMS UMB
0007h if DR-DOS excluded upper memory ("hole")
0008h if belongs to DOS
FFFAh if 386MAX UMB control block
FFFDh if 386MAX locked-out memory
FFFEh if 386MAX UMB (immediately follows its control block)
03h WORD size of memory block in paragraphs
05h 3 BYTEs unused
---DOS 2.x,3.x---
08h 8 BYTEs unused
---DOS 4+ ---
08h 8 BYTEs ASCII program name if PSP memory block or DR-DOS UMB,
else garbage
null-terminated if less than 8 characters
Notes: the next MCB is at segment (current + size + 1)
under DOS 3.1+, the first memory block is the DOS data segment,
containing installable drivers, buffers, etc. Under DOS 4+ it is
divided into subsegments, each with its own memory control block
(see below), the first of which is at offset 0000h.
for DOS 5.0, blocks owned by DOS may have either "SC" or "SD" in bytes
08h and 09h. "SC" is system code or locked-out inter-UMB memory,
"SD" is system data, device drivers, etc.
Some versions of DR-DOS use only seven characters of the program name,
placing a NUL in the eighth byte.
Format of MSDOS 5.0 UMB control block:
Offset Size Description
00h BYTE type: 5Ah if last block in chain, 4Dh otherwise
01h WORD first available paragraph in UMB if control block at start
of UMB, 000Ah if control block at end of UMB
03h WORD length in paragraphs of following UMB or locked-out region
05h 3 BYTEs unused
08h 8 BYTEs block type name: "UMB" if start block, "SM" if end block in UMB
Format of STARLITE (General Software's Embedded DOS) memory control block:
Offset Size Description
00h BYTE block type: 5Ah if last block in chain, otherwise 4Dh
01h WORD PSP segment of owner, 0000h if free, 0008h if belongs to DOS
03h WORD size of memory block in paragraphs
05h BYTE unused
06h WORD segment address of next memory control block (0000h if last)
08h WORD segment address of previous memory control block or 0000h
0Ah 6 BYTEs reserved
Format of DOS 4.x data segment subsegment control blocks:
Offset Size Description
00h BYTE subsegment type (blocks typically appear in this order)
"D" device driver
"E" device driver appendage
"I" IFS (Installable File System) driver
"F" FILES= control block storage area (for FILES>5)
"X" FCBS= control block storage area, if present
"C" BUFFERS EMS workspace area (if BUFFERS /X option used)
"B" BUFFERS= storage area
"L" LASTDRIVE= current directory structure array storage area
"S" STACKS= code and data area, if present (see below)
"T" INSTALL= transient code
01h WORD paragraph of subsegment start (usually the next paragraph)
03h WORD size of subsegment in paragraphs
05h 3 BYTEs unused
08h 8 BYTEs for types "D" and "I", base name of file from which the driver
was loaded (unused for other types)
Format of data at start of STACKS code segment (if present):
Offset Size Description
00h WORD ???
02h WORD number of stacks (the x in STACKS=x,y)
04h WORD size of stack control block array (should be 8*x)
06h WORD size of each stack (the y in STACKS=x,y)
08h DWORD pointer to STACKS data segment
0Ch WORD offset in STACKS data segment of stack control block array
0Eh WORD offset in STACKS data segment of last element of that array
10h WORD offset in STACKS data segment of the entry in that array for
the next stack to be allocated (initially same as value in 0Eh
and works its way down in steps of 8 to the value in 0Ch as
hardware interrupts pre-empt each other)
Note: the STACKS code segment data may, if present, be located as follows:
DOS 3.2: The code segment data is at a paragraph boundary fairly early
in the IBMBIO segment (seen at 0070:0190h)
DOS 3.3: The code segment is at a paragraph boundary in the DOS data
segment, which may be determined by inspecting the segment
pointers of the vectors for those of interrupts 02h, 08h-0Eh,
70h, 72-77h which have not been redirected by device drivers or
TSRs.
DOS 4.x: Identified by sub-segment control block type "S" within the DOS
data segment.
Format of array elements in STACKS data segment:
Offset Size Description
00h BYTE status: 00h=free, 01h=in use, 03h=corrupted by overflow of
higher stack.
01h BYTE not used
02h WORD previous SP
04h WORD previous SS
06h WORD ptr to word at top of stack (new value for SP). The word at the
top of the stack is preset to point back to this control block.
SHARE.EXE hooks (DOS 3.1-5.00):
(offsets from first system file table--pointed at by ListOfLists+04h)
Offset Size Description
-3Ch DWORD pointer to FAR routine for ???
Note: not called by MSDOS 3.3, set to 0000h:0000h by SHARE 3.3
-38h DWORD pointer to FAR routine called on opening file
on call, internal DOS location points at filename(see AX=5D06h)
Return: CF clear if successful
CF set on error
AX = DOS error code (24h) (see AH=59h)
Note: SHARE assumes DS=SS=DOS DS, direct-accesses DOS internals
to get name of file just opened
-34h DWORD pointer to FAR routine called on closing file
ES:DI -> system file table
Note: SHARE assumes SS=DOS DS, directly accesses DOS internals
does something to every lock record for file
-30h DWORD pointer to FAR routine to close all files for given computer
(called by AX=5D03h)
Note: SHARE assumes SS=DOS DS, directly accesses DOS internals
-2Ch DWORD pointer to FAR routine to close all files for given process
(called by AX=5D04h)
Note: SHARE assumes SS=DOS DS, directly accesses DOS internals
-28h DWORD pointer to FAR routine to close file by name
(called by AX=5D02h)
DS:SI -> DOS parameter list (see AX=5D00h)
DPL's DS:DX -> name of file to close
Return: CF clear if successful
CF set on error
AX = DOS error code (03h) (see AH=59h)
Note: SHARE assumes SS=DOS DS, directly accesses DOS internals
-24h DWORD pointer to FAR routine to lock region of file
call with BX = file handle
CX:DX = starting offset
SI:AX = size
Return: CF set on error
AL = DOS error code (21h) (see AH=59h)
Note: not called if file is marked as remote
Note: SHARE assumes SS=DOS DS, directly accesses DOS internals
-20h DWORD pointer to FAR routine to unlock region of file
call with BX = file handle
CX:DX = starting offset
SI:AX = size
Return: CF set on error
AL = DOS error code (21h) (see AH=59h)
Note: not called if file is marked as remote
Note: SHARE assumes SS=DOS DS, directly accesses DOS internals
-1Ch DWORD pointer to FAR routine to check if file region is locked
call with ES:DI -> system file table entry for file
CX = length of region from current position in file
Return: CF set if any portion of region locked
AX = 0021h
Note: SHARE assumes SS=DOS DS, directly accesses DOS internals
-18h DWORD pointer to FAR routine to get open file list entry
(called by AX=5D05h)
call with DS:SI -> DOS parameter list (see AX=5D00h)
DPL's BX = index of sharing record
DPL's CX = index of SFT in SFT chain of sharing rec
Return: CF set on error or not loaded
AX = DOS error code (12h) (see AH=59h)
CF clear if successful
ES:DI -> filename
CX = number of locks owned by specified SFT
BX = network machine number
DX destroyed
Note: SHARE assumes SS=DOS DS, directly accesses DOS internals
-14h DWORD pointer to FAR routine for updating FCB from SFT???
call with DS:SI -> unopened FCB
ES:DI -> system file table entry
Return: BL = C0h???
Note: copies following fields from SFT to FCB:
starting cluster of file 0Bh 1Ah
sharing record offset 33h 1Ch
file attribute 04h 1Eh
-10h DWORD pointer to FAR routine to get first cluster of FCB file ???
call with ES:DI -> system file table entry
DS:SI -> FCB
Return: CF set if SFT closed or sharing record offsets
mismatched
CF clear if successful
BX = starting cluster number from FCB
-0Ch DWORD pointer to FAR routine to close file if duplicate for process
DS:SI -> system file table
Return: AX = number of handle in JFT which already uses SFT
Note: called during open/create of a file
Note: SHARE assumes SS=DOS DS, directly accesses DOS internals
Note: if SFT was opened with inheritance enabled and sharing
mode 111, does something to all other SFTs owned by
same process which have the same file open mode and
sharing record
-08h DWORD pointer to FAR routine for ???
Note: SHARE assumes SS=DS=DOS DS, direct-accesses DOS internals
Note: closes various handles referring to file most-recently
opened
-04h DWORD pointer to FAR routine to update directory info in related SFT
entries
call with ES:DI -> system file table entry for file (see below)
AX = subfunction (apply to each related SFT)
00h: update time stamp (offset 0Dh) and date
stamp (offset 0Fh)
01h: update file size (offset 11h) and starting
cluster (offset 0Bh). Sets last-accessed
cluster fields to start of file if file
never accessed
02h: as function 01h, but last-accessed fields
always changed
03h: do both functions 00h and 02h
Note: follows ptr at offset 2Bh in system file table entries
Note: NOP if opened with no-inherit or via FCB
Format of sharing record:
Offset Size Description
00h BYTE flag
00h free block
01h allocated block
FFh end marker
01h WORD size of block
03h BYTE checksum of pathname (including NUL)
if sum of ASCII values is N, checksum is (N/256 + N%256)
04h WORD offset in SHARE's DS of lock record (see below)
06h DWORD pointer to start of system file table chain for file
0Ah WORD unique sequence number
0Ch var ASCIZ full pathname
Format of SHARE.EXE lock record:
Offset Size Description
00h WORD offset in SHARE's DS of next lock table in list
02h DWORD offset in file of start of locked region
06h DWORD offset in file of end of locked region
0Ah DWORD pointer to System File Table entry for this file
0Eh WORD PSP segment of lock's owner
Format of DOS 2.x system file tables:
Offset Size Description
00h DWORD pointer to next file table (offset FFFFh if last)
04h WORD number of files in this table
06h 28h bytes per file
Offset Size Description
00h BYTE number of file handles referring to this file
01h BYTE file open mode (see AH=3Dh)
02h BYTE file attribute
03h BYTE drive (0 = character device, 1 = A, 2 = B, etc)
04h 11 BYTEs filename in FCB format (no path,no period,blank-padded)
0Fh WORD ???
11h WORD ???
13h DWORD file size???
17h WORD file date in packed format (see AX=5700h)
19h WORD file time in packed format (see AX=5700h)
1Bh BYTE device attribute (see AX=4400h)
---character device---
1Ch DWORD pointer to device driver
---block device---
1Ch WORD starting cluster of file
1Eh WORD relative cluster in file of last cluster accessed
------
20h WORD absolute cluster number of current cluster
22h WORD ???
24h DWORD current file position???
Format of DOS 3.0 system file tables and FCB tables:
Offset Size Description
00h DWORD pointer to next file table (offset FFFFh if last)
04h WORD number of files in this table
06h 38h bytes per file
Offset Size Description
00h-1Eh as for DOS 3.1+ (see below)
1Fh WORD byte offset of directory entry within sector
21h 11 BYTES filename in FCB format (no path/period, blank-padded)
2Ch DWORD (SHARE.EXE) pointer to previous SFT sharing same file
30h WORD (SHARE.EXE) ??? network machine number
32h WORD PSP segment of file's owner (first three entries for
AUX/CON/PRN contain segment of IO.SYS startup code)
34h WORD (SHARE.EXE) offset in SHARE code seg of share record
36h WORD ??? apparently always 0000h
Format of DOS 3.1-3.3x system file tables and FCB tables:
Offset Size Description
00h DWORD pointer to next file table (offset FFFFh if last)
04h WORD number of files in this table
06h 35h bytes per file
Offset Size Description
00h WORD number of file handles referring to this file
02h WORD file open mode (see AH=3Dh)
bit 15 set if this file opened via FCB
04h BYTE file attribute (see AX=4301h)
05h WORD device info word (see AX=4400h)
bit 15 set if remote file
bit 14 set means do not set file date/time on closing
bit 12 set means don't inherit on EXEC
bits 5-0 drive number for disk files
07h DWORD pointer to device driver header if character device
else pointer to DOS Drive Parameter Block (see AH=32h)
0Bh WORD starting cluster of file
0Dh WORD file time in packed format (see AX=5700h)
0Fh WORD file date in packed format (see AX=5700h)
11h DWORD file size
---system file table---
15h DWORD current offset in file (may be larger than size of
file; INT 21/AH=42h does not check new position)
---FCB table---
15h WORD counter for last I/O to FCB
17h WORD counter for last open of FCB
(these are separate to determine the times of the
latest I/O and open)
---
19h WORD relative cluster within file of last cluster accessed
1Bh WORD absolute cluster number of last cluster accessed
0000h if file never read or written???
1Dh WORD number of sector containing directory entry
1Fh BYTE number of dir entry within sector (byte offset/32)
20h 11 BYTEs filename in FCB format (no path/period, blank-padded)
2Bh DWORD (SHARE.EXE) pointer to previous SFT sharing same file
2Fh WORD (SHARE.EXE) network machine number which opened file
31h WORD PSP segment of file's owner (see AH=26h) (first three
entries for AUX/CON/PRN contain segment of IO.SYS
startup code)
33h WORD offset within SHARE.EXE code segment of
sharing record (see above) 0000h = none
Format of DOS 4.0-5.0 system file tables and FCB tables:
Offset Size Description
00h DWORD pointer to next file table (offset FFFFh if last)
04h WORD number of files in this table
06h 3Bh bytes per file
Offset Size Description
00h WORD number of file handles referring to this file
02h WORD file open mode (see AH=3Dh)
bit 15 set if this file opened via FCB
04h BYTE file attribute (see AX=4301h)
05h WORD device info word (see AX=4400h)
bit 15 set if remote file
bit 14 set means do not set file date/time on closing
bit 13 set if named pipe
bit 12 set if no inherit
bit 11 set if network spooler
07h DWORD pointer to device driver header if character device
else pointer to DOS Drive Parameter Block (see AH=32h)
or REDIR data
0Bh WORD starting cluster of file
0Dh WORD file time in packed format (see AX=5700h)
0Fh WORD file date in packed format (see AX=5700h)
11h DWORD file size
15h DWORD current offset in file
---local file---
19h WORD relative cluster within file of last cluster accessed
1Bh DWORD number of sector containing directory entry
1Fh BYTE number of dir entry within sector (byte offset/32)
---network redirector---
19h DWORD pointer to REDIRIFS record
1Dh 3 BYTEs ???
------
20h 11 BYTEs filename in FCB format (no path/period, blank-padded)
2Bh DWORD (SHARE.EXE) pointer to previous SFT sharing same file
2Fh WORD (SHARE.EXE) network machine number which opened file
31h WORD PSP segment of file's owner (see AH=26h) (first three
entries for AUX/CON/PRN contain segment of IO.SYS
startup code)
33h WORD offset within SHARE.EXE code segment of
sharing record (see above) 0000h = none
35h WORD (local) absolute cluster number of last clustr accessed
(redirector) ???
37h DWORD pointer to IFS driver for file, 0000000h if native DOS
Format of current directory structure (CDS) (array, LASTDRIVE entries):
Offset Size Description
00h 67 BYTEs ASCIZ path in form X:\PATH (local) or \\MACH\PATH (network)
43h WORD drive attributes (see also note below and AX=5F07h)
bit 15: uses network redirector \ invalid if 00, installable
14: physical drive / file system if 11
13: JOIN'ed \ path above is true path that would be
12: SUBST'ed / needed if not under SUBST or JOIN
45h DWORD pointer to Drive Parameter Block for drive (see AH=32h)
---local drives---
49h WORD starting cluster of current directory
0000h = root, FFFFh = never accessed
4Bh WORD ??? seems to be FFFFh always
4Dh WORD ??? seems to be FFFFh always
---network drives---
49h DWORD pointer to redirector or REDIRIFS record, or FFFFh:FFFFh
4Dh WORD stored user data from INT 21/AX=5F03h???
------
4Fh WORD offset in current directory path of backslash corresponding to
root directory for drive
this value specifies how many characters to hide from the
"CHDIR" and "GETDIR" calls; normally set to 2 to hide the
drive letter and colon, SUBST, JOIN, and networks change it
so that only the appropriate portion of the true path is
visible to the user
---DOS 4.x---
51h BYTE ??? used by network
52h DWORD pointer to IFS driver for this drive, 00000000h if native DOS
56h WORD ???
Notes: the path for invalid drives is normally set to X:\, but may be empty
after JOIN x: /D in DR-DOS 5.0 or NET USE x: /D in older LAN versions
normally, only one of bits 13&12 may be set together with bit 14, but
DR-DOS 5.0 uses other combinations for bits 15-12: 0111 JOIN,
0001 SUBST, 0101 ASSIGN
Format of DR-DOS 5.0-6.0 current directory structure entry (array):
Offset Size Description
00h 67 BYTEs ASCIZ pathname of actual root directory for this logical drive
43h WORD drive attributes
1000h SUBSTed drive
3000h??? JOINed drive
4000h physical drive
5000h ASSIGNed drive
7000h JOINed drive
8000h network drive
45h BYTE physical drive number (0=A:) if this logical drive is valid
46h BYTE ??? apparently flags for JOIN and ASSIGN
47h WORD cluster number of start of parent directory (0000h = root)
49h WORD entry number of current directory in parent directory
4Bh WORD cluster number of start of current directory
4Dh 2 BYTEs used for media change detection (details not available)
4Fh WORD cluster number of SUBST/JOIN "root" directory
0000h if physical root directory
Format of device driver header:
Offset Size Description
00h DWORD pointer to next driver, offset=FFFFh if last driver
04h WORD device attributes
Character device:
bit 15 set
bit 14 IOCTL supported (see AH=44h)
bit 13 (DOS 3+) output until busy supported
bit 12 reserved
bit 11 (DOS 3+) OPEN/CLOSE/RemMedia calls supported
bits 10-8 reserved
bit 7 (DOS 5+) Generic IOCTL check call supported (cmd 19h)
(see AX=4410h,AX=4411h)
bit 6 (DOS 3.2+) Generic IOCTL call supported (command 13h)
(see AX=440Ch,AX=440Dh)
bit 5 reserved
bit 4 device is special (use INT 29 "fast console output")
bit 3 device is CLOCK$ (all reads/writes use transfer
record described below)
bit 2 device is NUL
bit 1 device is standard output
bit 0 device is standard input
Block device:
bit 15 clear
bit 14 IOCTL supported
bit 13 non-IBM format
bit 12 reserved
bit 11 (DOS 3+) OPEN/CLOSE/RemMedia calls supported
bit 10 reserved
bit 9 direct I/O not allowed???
(set by DOS 3.3 DRIVER.SYS for "new" drives)
bit 8 ??? set by DOS 3.3 DRIVER.SYS for "new" drives
bit 7 (DOS 5+) Generic IOCTL check call supported (cmd 19h)
(see AX=4410h,AX=4411h)
bit 6 (DOS 3.2+) Generic IOCTL call supported (command 13h)
implies support for commands 17h and 18h
(see AX=440Ch,AX=440Dh,AX=440Eh,AX=440Fh)
bits 5-2 reserved
bit 1 driver supports 32-bit sector addressing
bit 0 reserved
Note: for European MSDOS 4.0, bit 11 also indicates that bits
8-6 contain a version code (000 = DOS 3.0,3.1;
001 = DOS 3.2, 010 = European DOS 4.0)
06h WORD device strategy entry point
call with ES:BX -> request header (see INT 2F/AX=0802h)
08h WORD device interrupt entry point
---character device---
0Ah 8 BYTEs blank-padded character device name
---block device---
0Ah BYTE number of subunits (drives) supported by driver
0Bh 7 BYTEs unused
---
12h WORD (CD-ROM driver) reserved, must be 0000h
14h BYTE (CD-ROM driver) drive letter (must initially be 00h)
15h BYTE (CD-ROM driver) number of units
16h 6 BYTEs (CD-ROM driver) signature 'MSCDnn' where 'nn' is version
(currently '00')
Format of CLOCK$ transfer record:
Offset Size Description
00h WORD number of days since 1-Jan-1980
02h BYTE minutes
03h BYTE hours
04h BYTE hundredths of second
05h BYTE seconds
Format of DOS 2.x disk buffer:
Offset Size Description
00h DWORD pointer to next disk buffer, offset = FFFFh if last
least-recently used buffer is first in chain
04h BYTE drive (0=A, 1=B, etc), FFh if not in use
05h 3 BYTEs unused??? (seems always to be 00h 00h 01h)
08h WORD logical sector number
0Ah BYTE number of copies to write (1 for non-FAT sectors)
0Bh BYTE sector offset between copies if multiple copies to be written
0Ch DWORD pointer to DOS Drive Parameter Block (see AH=32h)
10h buffered data
Format of DOS 3.x disk buffer:
Offset Size Description
00h DWORD pointer to next disk buffer, offset = FFFFh if last
least-recently used buffer is first in chain
04h BYTE drive (0=A,1=B, etc), FFh if not in use
05h BYTE flags
bit 7: ???
bit 6: buffer dirty
bit 5: buffer has been referenced
bit 4: ???
bit 3: sector in data area
bit 2: sector in a directory, either root or subdirectory
bit 1: sector in FAT
bit 0: boot sector??? (guess)
06h WORD logical sector number
08h BYTE number of copies to write (1 for non-FAT sectors)
09h BYTE sector offset between copies if multiple copies to be written
0Ah DWORD pointer to DOS Drive Parameter Block (see AH=32h)
0Eh WORD unused??? (almost always 0)
10h buffered data
Format of DOS 4.00 (pre UR 25066) disk buffer info:
Offset Size Description
00h DWORD pointer to array of disk buffer hash chain heads (see below)
04h WORD number of disk buffer hash chains (referred to as NDBCH below)
06h DWORD pointer to lookahead buffer, zero if not present
0Ah WORD number of lookahead sectors, else zero (the y in BUFFERS=x,y)
0Ch BYTE 00h if buffers in EMS (/X), FFh if not
0Dh WORD EMS handle for buffers, zero if not in EMS
0Fh WORD EMS physical page number used for buffers (usually 255)
11h WORD ??? seems always to be 0001h
13h WORD segment of EMS physical page frame
15h WORD ??? seems always to be zero
17h 4 WORDs EMS partial page mapping information???
Format of DOS 4.01 (from UR 25066 Corrctive Services Disk on) disk buffer info:
Offset Size Description
00h DWORD pointer to array of disk buffer hash chain heads (see below)
04h WORD number of disk buffer hash chains (referred to as NDBCH below)
06h DWORD pointer to lookahead buffer, zero if not present
0Ah WORD number of lookahead sectors, else zero (the y in BUFFERS=x,y)
0Ch BYTE 01h, possibly to distinguish from pre-UR 25066 format
0Dh WORD ??? EMS segment for BUFFERS (only with /XD)
0Fh WORD ??? EMS physical page number of EMS seg above (only with /XD)
11h WORD ??? EMS segment for ??? (only with /XD)
13h WORD ??? EMS physical page number of above (only with /XD)
15h BYTE ??? number of EMS page frames present (only with /XD)
16h WORD segment of one-sector workspace buffer allocated in main memory
if BUFFERS/XS or /XD options in effect, possibly to avoid DMA
into EMS
18h WORD EMS handle for buffers, zero if not in EMS
1Ah WORD EMS physical page number used for buffers (usually 255)
1Ch WORD ??? appears always to be 0001h
1Eh WORD segment of EMS physical page frame
20h WORD ??? appears always to be zero
22h BYTE 00h if /XS, 01h if /XD, FFh if BUFFERS not in EMS
Format of DOS 4.x disk buffer hash chain head (array, one entry per chain):
Offset Size Description
00h WORD EMS logical page number in which chain is resident, -1 if not
in EMS
02h DWORD pointer to least recently used buffer header. All buffers on
this chain are in the same segment.
06h BYTE number of dirty buffers on this chain
07h BYTE reserved (00h)
Notes: buffered disk sectors are assigned to chain N where N is the sector's
address modulo NDBCH, 0 <= N <= NDBCH-1
each chain resides completely within one EMS page
this structure is in main memory even if buffers are in EMS
Format of DOS 4.0-5.0 disk buffer:
Offset Size Description
00h WORD forward ptr, offset only, to next least recently used buffer
02h WORD backward ptr, offset only
04h BYTE drive (0=A,1=B, etc), FFh if not in use
05h BYTE flags
bit 7: remote buffer
bit 6: buffer dirty
bit 5: buffer has been referenced
bit 4: search data buffer (only valid if remote buffer)
bit 3: sector in data area
bit 2: sector in a directory, either root or subdirectory
bit 1: sector in FAT
bit 0: reserved
06h DWORD logical sector number
0Ah BYTE number of copies to write
for FAT sectors, same as number of FATs
for data and directory sectors, usually 1
0Bh WORD offset in sectors between copies to write for FAT sectors
0Dh DWORD pointer to DOS Drive Parameter Block (see AH=32h)
11h WORD buffer use count if remote buffer (see flags above)
13h BYTE reserved
14h buffered data
Note: for DOS 4.x, all buffered sectors which have the same hash value
(computed as the sum of high and low words of the logical sector
number divided by NDBCH) are on the same doubly-linked circular
chain; for DOS 5.0, only a single circular chain exists.
the links consist of offset addresses only, the segment being the same
for all buffers in the chain.
Format of DOS 5.0 disk buffer info:
Offset Size Description
00h DWORD pointer to least-recently-used buffer header (may be in HMA)
(see above)
04h WORD 0000h (DOS 5 does not hash disk buffers, so offset 00h points
directly at the only buffer chain)
06h DWORD pointer to lookahead buffer, zero if not present
0Ah WORD number of lookahead sectors, else zero (the y in BUFFERS=x,y)
0Ch BYTE buffer location
00h base memory, no workspace buffer
01h HMA, workspace buffer in base memory
0Dh DWORD pointer to one-segment workspace buffer in base memory
11h 3 BYTEs unused???
14h WORD ???
16h BYTE ??? apparently always 00h
17h BYTE ??? apparently always FFh
18h BYTE ??? apparently always 00h
19h BYTE ??? apparently always 00h
1Ah WORD ??? segment within HIMEM.SYS area when buffers are in HMA and
UMBs are enabled???, else 0000h
1Ch BYTE bit 0 set iff UMB MCB chain linked to normal MCB chain
1Dh WORD ???
1Fh WORD segment of first MCB in upper memory blocks or FFFFh if DOS
memory chain in base 640K only (first UMB MCB usually at 9FFFh,
locking out video memory with a DOS-owned memory block)
21h WORD paragraph of start of most recent MCB chain search
Format of IFS driver list:
Offset Size Description
00h DWORD pointer to next driver header
04h 8 BYTEs IFS driver name (blank padded), as used by FILESYS command
0Ch 4 BYTEs ???
10h DWORD pointer to IFS utility function entry point (see below)
call with ES:BX -> IFS request (see below)
14h WORD offset in header's segment of driver entry point
???
Call IFS utility function entry point with:
AH = 20h miscellaneous functions
AL = 00h get date
Return: CX = year
DH = month
DL = day
AL = 01h get process ID and computer ID
Return: BX = current PSP segment
DX = active network machine number
AL = 05h get file system info
ES:DI -> 16-byte info buffer
Return: buffer filled
Offset Size Description
00h 2 BYTEs unused
02h WORD number of SFTs (actually counts only
the first two file table arrays)
04h WORD number of FCB table entries
06h WORD number of proctected FCBs
08h 6 BYTEs unused
0Eh WORD largest sector size supported
AL = 06h get machine name
ES:DI -> 18-byte buffer for name
Return: buffer filled with name starting at offset 02h
AL = 08h get sharing retry count
Return: BX = sharing retry count
AL = other
Return: CF set
AH = 21h get redirection state
BH = type (03h disk, 04h printer)
Return: BH = state (00h off, 01h on)
AH = 22h ??? some sort of time calculation
AL = 00h ???
nonzero ???
AH = 23h ??? some sort of time calculation
AH = 24h compare filenames
DS:SI -> first ASCIZ filename
ES:DI -> second ASCIZ filename
Return: ZF set if files are same ignoring case and / vs \
AH = 25h normalize filename
DS:SI -> ASCIZ filename
ES:DI -> buffer for result
Return: filename uppercased, forward slashes changed to backslashes
AH = 26h get DOS stack
Return: DS:SI -> top of stack
CX = size of stack in bytes
AH = 27h increment InDOS flag
AH = 28h decrement InDOS flag
Note: IFS drivers which do not wish to implement functions 20h or 24h-28h may
pass them on to the default handler pointed at by [LoL+37h]
Format of IFS request block:
Offset Size Description
00h WORD total size in bytes of request
02h BYTE class of request
02h ???
03h redirection
04h ???
05h file access
06h convert error code to string
07h ???
03h WORD returned DOS error code
05h BYTE IFS driver exit status
00h success
01h ???
02h ???
03h ???
04h ???
FFh internal failure
06h 16 BYTEs ???
---request class 02h---
16h BYTE function code
04h ???
17h BYTE unused???
18h DWORD pointer to ???
1Ch DWORD pointer to ???
20h 2 BYTEs ???
---request class 03h---
16h BYTE function code
17h BYTE ???
18h DWORD pointer to ???
1Ch DWORD pointer to ???
22h WORD returned ???
24h WORD returned ???
26h WORD returned ???
28h BYTE returned ???
29h BYTE unused???
---request class 04h---
16h DWORD pointer to ???
1Ah DWORD pointer to ???
---request class 05h---
16h BYTE function code
01h flush disk buffers
02h get disk space
03h MKDIR
04h RMDIR
05h CHDIR
06h delete file
07h rename file
08h search directory
09h file open/create
0Ah LSEEK
0Bh read from file
0Ch write to file
0Dh lock region of file
0Eh commit/close file
0Fh get/set file attributes
10h printer control
11h ???
12h process termination
13h ???
---class 05h function 01h---
17h 7 BYTEs ???
1Eh DWORD pointer to ???
22h 4 BYTEs ???
26h BYTE ???
27h BYTE ???
---class 05h function 02h---
17h 7 BYTEs ???
1Eh DWORD pointer to ???
22h 4 BYTEs ???
26h WORD returned total clusters
28h WORD returned sectors per cluster
2Ah WORD returned bytes per sector
2Ch WORD returned available clusters
2Eh BYTE returned ???
2Fh BYTE ???
---class 05h functions 03h,04h,05h---
17h 7 BYTEs ???
1Eh DWORD pointer to ???
22h 4 BYTEs ???
26h DWORD pointer to directory name
---class 05h function 06h---
17h 7 BYTEs ???
1Eh DWORD pointer to ???
22h 4 BYTEs ???
26h WORD attribute mask
28h DWORD pointer to filename
---class 05h function 07h---
17h 7 BYTEs ???
1Eh DWORD pointer to ???
22h 4 BYTEs ???
26h WORD attribute mask
28h DWORD pointer to source filespec
2Ch DWORD pointer to destination filespec
---class 05h function 08h---
17h 7 BYTEs ???
1Eh DWORD pointer to ???
22h 4 BYTEs ???
26h BYTE 00h FINDFIRST
01h FINDNEXT
28h DWORD pointer to FindFirst search data + 01h if FINDNEXT
2Ch WORD search attribute if FINDFIRST
2Eh DWORD pointer to filespec if FINDFIRST
---class 05h function 09h---
17h 7 BYTEs ???
1Eh DWORD pointer to ???
22h DWORD pointer to IFS open file structure (see below)
26h WORD ??? \ together, specify open vs. create, whether or
28h WORD ??? / not to truncate
2Ah 4 BYTEs ???
2Eh DWORD pointer to filename
32h 4 BYTEs ???
36h WORD file attributes on call
returned ???
38h WORD returned ???
---class 05h function 0Ah---
17h 7 BYTEs ???
1Eh DWORD pointer to ???
22h DWORD pointer to IFS open file structure (see below)
26h BYTE seek type (02h = from end)
28h DWORD offset on call
returned new absolute position
---class 05h functions 0Bh,0Ch---
17h 7 BYTEs ???
1Eh DWORD pointer to ???
22h DWORD pointer to IFS open file structure (see below)
28h WORD number of bytes to transfer
returned bytes actually transferred
2Ah DWORD transfer address
---class 05h function 0Dh---
17h 7 BYTEs ???
1Eh DWORD pointer to ???
22h DWORD pointer to IFS open file structure (see below)
26h BYTE file handle???
27h BYTE unused???
28h WORD ???
2Ah WORD ???
2Ch WORD ???
2Eh WORD ???
---class 05h function 0Eh---
17h 7 BYTEs ???
1Eh DWORD pointer to ???
22h DWORD pointer to IFS open file structure (see below)
26h BYTE 00h commit file
01h close file
27h BYTE unused???
---class 05h function 0Fh---
17h 7 BYTEs ???
1Eh DWORD pointer to ???
22h 4 BYTEs ???
26h BYTE 02h GET attributes
03h PUT attributes
27h BYTE unused???
28h 12 BYTEs ???
34h WORD search attributes???
36h DWORD pointer to filename
3Ah WORD (GET) returned ???
3Ch WORD (GET) returned ???
3Eh WORD (GET) returned ???
40h WORD (GET) returned ???
42h WORD (PUT) new attributes
(GET) returned attributes
---class 05h function 10h---
17h 7 BYTEs ???
1Eh DWORD pointer to ???
22h DWORD pointer to IFS open file structure (see below)
26h WORD ???
28h DWORD pointer to ???
2Ch WORD ???
2Eh BYTE ???
2Fh BYTE subfunction
01h get printer setup
03h ???
04h ???
05h ???
06h ???
07h ???
21h set printer setup
---class 05h function 11h---
17h 7 BYTEs ???
1Eh DWORD pointer to ???
22h DWORD pointer to IFS open file structure (see below)
26h BYTE subfunction
27h BYTE unused???
28h WORD ???
2Ah WORD ???
2Ch WORD ???
2Eh BYTE ???
2Fh BYTE ???
---class 05h function 12h---
17h 15 BYTEs unused???
26h WORD PSP segment
28h BYTE type of process termination
29h BYTE unused???
---class 05h function 13h---
17h 15 BYTEs unused???
26h WORD PSP segment
---request class 06h---
16h DWORD returned pointer to string corresponding to error code at 03h
1Ah BYTE returned ???
1Bh BYTE unused
---request class 07h---
16h DWORD pointer to IFS open file structure (see below)
1Ah BYTE ???
1Bh BYTE unused???
Format of IFS open file structure:
Offset Size Description
00h WORD ???
02h WORD device info word
04h WORD file open mode
06h WORD ???
08h WORD file attributes
0Ah WORD owner's network machine number
0Ch WORD owner's PSP segment
0Eh DWORD file size
12h DWORD current offset in file
16h WORD file time
18h WORD file date
1Ah 11 BYTEs filename in FCB format
25h WORD ???
27h WORD hash value of SFT address
(low word of linear address + segment&F000h)
29h 3 WORDs network info from SFT
2Fh WORD ???
Format of one item in DOS 4+ list of special program names:
Offset Size Description
00h BYTE length of name (00h = end of list)
01h N BYTEs name in format name.ext
N 2 BYTEs DOS version to return for program (major,minor)
(see AH=30h,INT 2F/AX=122Fh)
---DOS 4 only---
N+2 BYTE number of times to return fake version number (FFh = always)
Note: if the name of the executable for the program making the DOS "get
version" call matches one of the names in this list, DOS returns the
specified version rather than the true version number
----------215252-----------------------------
INT 21 - VIRUS - "516"/"Leapfrog" - INSTALLATION CHECK
AX = 5252h
Return: BX = FFEEh if resident
SeeAlso: AX=4BFFh"Cascade",AX=58CCh
----------2153-------------------------------
INT 21 - DOS 2+ internal - TRANSLATE BIOS PARAMETER BLOCK TO DRIVE PARAM BLOCK
AH = 53h
DS:SI -> BIOS Parameter Block (see below)
ES:BP -> buffer for Drive Parameter Block (see AH=32h for format)
Return: ES:BP buffer filled
Note: for DOS 3+, the cluster at which to start searching is set to 0000h
and the number of free clusters is set to FFFFh (unknown)
Format of BIOS Parameter Block:
Offset Size Description
00h WORD number of bytes per sector
02h BYTE number of sectors per cluster
03h WORD number of reserved sectors at start of disk
05h BYTE number of FATs
06h WORD number of entries in root directory
08h WORD total number of sectors
for DOS 4+, set to zero if partition >32M, then set DWORD at
15h to actual number of sectors
0Ah BYTE media ID byte
0Bh WORD number of sectors per FAT
---DOS 3+---
0Dh WORD number of sectors per track
0Fh WORD number of heads
11h DWORD number of hidden sectors
15h 11 BYTEs reserved
---DOS 4+ ---
15h DWORD total number of sectors if word at 08h contains zero
19h 6 BYTEs ???
1Fh WORD number of cylinders
21h BYTE device type
22h WORD device attributes (removable or not, etc)
---European MSDOS 4.00---
15h DWORD total number of sectors if word at 08h contains zero
(however, this DOS does not actually implement >32M partitions)
----------2154-------------------------------
INT 21 - DOS 2+ - GET VERIFY FLAG
AH = 54h
Return: AL = verify flag
00h off
01h on (all disk writes verified after writing)
SeeAlso: AH=2Eh
----------2155-------------------------------
INT 21 - DOS 2+ internal - CREATE CHILD PSP
AH = 55h
DX = segment at which to create new PSP
SI = (DOS 3+) value to place in memory size field at DX:[0002h]
Return: CF clear if successful
Notes: creates a "child" PSP rather than making an exact copy of the current
PSP; the new PSP's parent pointer is set to the current PSP and the
reference count for each inherited file is incremented
(DOS 2+) sets current PSP to DX
(DOS 3+) marks "no inherit" file handles as closed in child PSP
SeeAlso: AH=26h,AH=50h
----------2156-------------------------------
INT 21 - DOS 2+ - "RENAME" - RENAME FILE
AH = 56h
DS:DX -> ASCIZ filename of existing file (no wildcards, but see below)
ES:DI -> ASCIZ new filename (no wildcards)
CL = attribute mask (server call only, see below)
Return: CF clear if successful
CF set on error
AX = error code (02h,03h,05h,11h) (see AH=59h)
Notes: allows move between directories on same logical volume
does not set the archive attribute (see AX=4300h), which results in
incremental backups not backing up the file under its new name
open files should not be renamed
(DOS 3+) allows renaming of directories
(DOS 3.1+) wildcards are allowed if invoked via AX=5D00h, in which case
error 12h (no more files) is returned on success, and both source and
destination specs must be canonical (as returned by AH=60h).
Wildcards in the destination are replaced by the corresponding char
of each source file being renamed. Under DOS 3.x, the call will fail
if the destination wildcard is *.* or equivalent. When invoked via
AX=5D00h, only those files matching the attribute mask in CL are
renamed.
under the FlashTek X-32 DOS extender, the old-name pointer is in DS:EDX
and the new-name pointer is in ES:EDI (DS must equal ES)
SeeAlso: AH=17h,AX=4301h,AH=60h,AX=5D00h
----------215700-----------------------------
INT 21 - DOS 2+ - GET FILE'S DATE AND TIME
AX = 5700h
BX = file handle
Return: CF clear if successful
CX = file's time
bits 15-11: hours (0-23)
10-5: minutes
4-0: seconds/2
DX = file's date
bits 15-9: year - 1980
8-5: month
4-0: day
CF set on error
AX = error code (01h,06h) (see AH=59h)
SeeAlso: AX=5701h
----------215701-----------------------------
INT 21 - DOS 2+ - SET FILE'S DATE AND TIME
AX = 5701h
BX = file handle
CX = new time (see AX=5700h)
DX = new date (see AX=5700h)
Return: CF clear if successful
CF set on error
AX = error code (01h,06h) (see AH=59h)
SeeAlso: AX=5700h
----------215702-----------------------------
INT 21 - DOS 4.x only - GET ???
AX = 5702h
BX = ??? (0000h through 0004h)
DS:SI -> ???
ES:DI -> result buffer
CX = size of result buffer
Return: CX = size of returned data
SeeAlso: AX=5703h,AX=5704h
----------215703-----------------------------
INT 21 - DOS 4.x only - GET ???
AX = 5703h
BX = file handle (only 0000h through 0004h valid)
DS:SI -> ??? passed through to INT 2F/AX=112Dh
ES:DI -> result buffer
CX = size of result buffer
Return: CX = size of returned data
ES:DI -> zero word (DOS 4.0) if CX >= 2 on entry
SeeAlso: AX=5702h,AX=5704h,INT 2F/AX=112Dh
----------215704-----------------------------
INT 21 - DOS 4.x only - TRUNCATE OPEN FILE TO ZERO LENGTH
AX = 5704h
BX = file handle (only 0000h through 0004h valid)
DS:SI -> ??? passed through to INT 2F/AX=112Dh
ES:DI -> result buffer
CX = size of result buffer
Return: CX = size of returned data
ES:DI -> zero word (DOS 4.0) if CX >= 2 on entry
SeeAlso: AX=5702h,AX=5703h,INT 2F/AX=112Dh
----------2158-------------------------------
INT 21 - DOS 3+ - GET OR SET MEMORY ALLOCATION STRATEGY
AH = 58h
AL = subfunction
00h get allocation strategy
Return: AX = current strategy
00h low memory first fit
01h low memory best fit
02h low memory last fit
---DOS 5.0---
40h high memory first fit
41h high memory best fit
42h high memory last fit
80h first fit, try high then low memory
81h best fit, try high then low memory
82h last fit, try high then low memory
01h set allocation strategy
BL = new allocation strategy (see above)
BH = 00h (DOS 5.0)
Return: CF clear if successful
CF set on error
AX = error code (01h) (see AH=59h)
Notes: the Set subfunction accepts any value in BL for DOS 3.x and 4.x;
2 or greater means last fit
the Get subfunction returns the last value set
a program which changes the allocation strategy should restore it
before terminating
Toshiba MSDOS 2.11 supports subfunctions 00h and 01h
DR-DOS 3.41 reportedly reverses subfunctions 00h and 01h
SeeAlso: AH=48h,AH=49h,AH=4Ah,INT 2F/AX=4310h,INT 67/AH=3Fh
----------2158-------------------------------
INT 21 - DOS 5.0 - GET OR SET UMB LINK STATE
AH = 58h
AL = subfunction
02h get UMB link state
Return: AL = 00h UMBs not part of DOS memory chain
= 01h UMBs in DOS memory chain
03h set UMB link state
BX = 0000h remove UMBs from DOS memory chain
= 0001h add UMBs to DOS memory chain
Return: CF clear if successful
CF set on error
AX = error code (01h) (see AH=59h)
Note: a program which changes the UMB link state should restore it before
terminating
----------2158CC-----------------------------
INT 21 - VIRUS - "1067"/"Headcrash" - INSTALLATION CHECK
AX = 58CCh
Return: CF clear if resident
SeeAlso: AX=5252h,AX=6969h
----------2159--BX0000-----------------------
INT 21 - DOS 3+ - GET EXTENDED ERROR INFORMATION
AH = 59h
BX = 0000h
Return: AX = extended error code (see below)
BH = error class (see below)
BL = recommended action (see below)
CH = error locus (see below)
ES:DI may be pointer (see error code list below)
CL, DX, SI, BP, and DS destroyed
Notes: functions available under DOS 2.x map the true DOS 3+ error code into
one supported under DOS 2.x
you should call this function to retrieve the true error code when an
FCB or DOS 2.x call returns an error
SeeAlso: AX=5D0Ah,INT 2F/AX=122Dh
Values for extended error code:
00h no error
01h function number invalid
02h file not found
03h path not found
04h too many open files (no handles available)
05h access denied
06h invalid handle
07h memory control block destroyed
08h insufficient memory
09h memory block address invalid
0Ah environment invalid (usually >32K in length)
0Bh format invalid
0Ch access code invalid
0Dh data invalid
0Eh reserved
0Fh invalid drive
10h attempted to remove current directory
11h not same device
12h no more files
---DOS 3+---
13h disk write-protected
14h unknown unit
15h drive not ready
16h unknown command
17h data error (CRC)
18h bad request structure length
19h seek error
1Ah unknown media type (non-DOS disk)
1Bh sector not found
1Ch printer out of paper
1Dh write fault
1Eh read fault
1Fh general failure
20h sharing violation
21h lock violation
22h disk change invalid
ES:DI -> ASCIZ volume label of required disk
23h FCB unavailable
24h sharing buffer overflow
25h (DOS 4+) code page mismatch
26h (DOS 4+) cannot complete file operation (out of input)
27h (DOS 4+) insufficient disk space
28h-31h reserved
32h network request not supported
33h remote computer not listening
34h duplicate name on network
35h network name not found
36h network busy
37h network device no longer exists
38h network BIOS command limit exceeded
39h network adapter hardware error
3Ah incorrect response from network
3Bh unexpected network error
3Ch incompatible remote adapter
3Dh print queue full
3Eh queue not full
3Fh not enough space to print file
40h network name was deleted
41h network: Access denied
42h network device type incorrect
43h network name not found
44h network name limit exceeded
45h network BIOS session limit exceeded
46h temporarily paused
47h network request not accepted
48h network print/disk redirection paused
49h (LANtastic) invalid network version
4Ah (LANtastic) account expired
4Bh (LANtastic) password expired
4Ch (LANtastic) login attempt invalid at this time
4Dh (LANtastic v3+) disk limit exceeded on network node
4Eh (LANtastic v3+) not logged in to network node
4Fh reserved
50h file exists
51h reserved
52h cannot make directory
53h fail on INT 24h
54h (DOS 3.3+) too many redirections
55h (DOS 3.3+) duplicate redirection
56h (DOS 3.3+) invalid password
57h (DOS 3.3+) invalid parameter
58h (DOS 3.3+) network write fault
59h (DOS 4+) function not supported on network
5Ah (DOS 4+) required system component not installed
Values for Error Class:
01h out of resource (storage space or I/O channels)
02h temporary situation (file or record lock)
03h authorization (denied access)
04h internal (system software bug)
05h hardware failure
06h system failure (configuration file missing or incorrect)
07h application program error
08h not found
09h bad format
0Ah locked
0Bh media error
0Ch already exists
0Dh unknown
Values for Suggested Action:
01h retry
02h delayed retry
03h prompt user to reenter input
04h abort after cleanup
05h immediate abort
06h ignore
07h retry after user intervention
Values for Error Locus:
01h unknown or not appropriate
02h block device (disk error)
03h network related
04h serial device (timeout)
05h memory related
----------2159--BX0001-----------------------
INT 21 - European MSDOS 4.0 - GET HARD ERROR INFORMATION
AH = 59h
BX = 0001h
Return: ES:DI -> hard error information packet (see below) for most recent
hard (critical) error
SeeAlso: AH=95h,INT 24
Format of hard error information packet:
Offset Size Description
00h WORD contents of AX at system entry
02h WORD Process ID which encountered error
04h WORD contents of AX at time of error
06h BYTE error type
00h physical I/O error
01h disk change request
02h file sharing violation
03h FCB problem
04h file locking violation
05h bad FAT
06h network detected error
07h BYTE INT 24 error code
08h WORD extended error code (see AH=59h/BX=0000h)
0Ah DWORD pointer to associated device
----------215A-------------------------------
INT 21 - DOS 3+ - CREATE TEMPORARY FILE
AH = 5Ah
CX = file attribute (see AX=4301h)
DS:DX -> ASCIZ path ending with a '\' + 13 zero bytes to receive the
generated filename
Return: CF clear if successful
AX = file handle opened for read/write in compatibility mode
DS:DX pathname extended with generated name for temporary file
CF set on error
AX = error code (03h,04h,05h) (see AH=59h)
Notes: creates a file with a unique name which must be explicitly deleted
COMPAQ DOS 3.31 hangs if the pathname is at XXXXh:0000h; it apparently
wraps around to the end of the segment
under the FlashTek X-32 DOS extender, the path pointer is in DS:EDX
SeeAlso: AH=3Ch,AH=5Bh
----------215B-------------------------------
INT 21 - DOS 3+ - CREATE NEW FILE
AH = 5Bh
CX = file attribute (see AX=4301h)
DS:DX -> ASCIZ filename
Return: CF clear if successful
AX = file handle opened for read/write in compatibility mode
CF set on error
AX = error code (03h,04h,05h,50h) (see AH=59h)
Notes: unlike AH=3Ch, this function will fail if the specified file exists
rather than truncating it; this permits its use in creating semaphore
files because it is an atomic "test and set" operation
under the FlashTek X-32 DOS extender, the filename pointer is in DS:EDX
SeeAlso: AH=3Ch,AH=5Ah
----------215C-------------------------------
INT 21 - DOS 3+ - "FLOCK" - RECORD LOCKING
AH = 5Ch
AL = subfunction
00h lock region of file
01h unlock region of file
BX = file handle
CX:DX = start offset of region within file
SI:DI = length of region in bytes
Return: CF clear if successful
CF set on error
AX = error code (01h,06h,21h,24h) (see AH=59h)
Notes: error returned unless SHARE or network installed
an unlock call must specify the same region as some prior lock call
locked regions become entirely inaccessible to other processes
duplicate handles created with AH=45h or AH=46h inherit locks, but
handles inherited by child processes (see AH=4Bh) do not
SeeAlso: AX=440Bh,AH=BCh,AH=BEh,INT 2F/AX=110Ah,INT 2F/AX=110Bh
----------215D00-----------------------------
INT 21 U - DOS 3.1+ internal - SERVER FUNCTION CALL
AX = 5D00h
DS:DX -> DOS parameter list (see below)
DPL contains all register values for a call to INT 21h
Return: as appropriate for function being called
Notes: does not check AH. Out of range values will crash the system
executes using specified computer ID and process ID
sharing delay loops skipped
a special sharing mode is enabled
wildcards are enabled for DELETE (AH=41h) and RENAME (AH=56h)
an extra file attribute parameter is enabled for OPEN (AH=3Dh),
DELETE (AH=41h), and RENAME (AH=56h)
functions which take filenames require canonical names (as returned
by AH=60h); this is apparently to prevent multi-hop file forwarding
SeeAlso: AH=3Dh,AH=41h,AH=56h,AH=60h
Format of DOS parameter list:
Offset Size Description
00h WORD AX
02h WORD BX
04h WORD CX
06h WORD DX
08h WORD SI
0Ah WORD DI
0Ch WORD DS
0Eh WORD ES
10h WORD reserved (0)
12h WORD computer ID (0 = current system)
14h WORD process ID (PSP segment on specified computer)
----------215D01-----------------------------
INT 21 U - DOS 3.1+ internal - COMMIT ALL FILES FOR SPECIFIED COMPUTER/PROCESS
AX = 5D01h
DS:DX -> DOS parameter list (see AX=5D00h), only computer ID and
process ID fields used
Return: CF set on error
AX = error code (see AH=59h)
CF clear if successful
Notes: flushes buffers and updates directory entries for each file which has
been written to; if remote file, calls INT 2F/AX=1107h
the computer ID and process ID are stored but ignored under DOS 3.3
SeeAlso: AH=0Dh,AH=68h,INT 2F/AX=1107h
----------215D02-----------------------------
INT 21 U - DOS 3.1+ internal - SHARE.EXE - CLOSE FILE BY NAME
AX = 5D02h
DS:DX -> DOS parameter list (see AX=5D00h), only fields DX, DS,
computer ID, and process ID used
DPL's DS:DX -> ASCIZ name of file to close
Return: CF set on error
AX = error code (see AH=59h)
CF clear if successful
Notes: error unless SHARE is loaded (calls [SysFileTable-28h]) (see AH=52h)
name must be canonical fully-qualified, such as returned by AH=60h
SeeAlso: AX=5D03h,AX=5D04h,AH=3Eh,AH=60h
----------215D03-----------------------------
INT 21 U - DOS 3.1+ internal - SHARE.EXE - CLOSE ALL FILES FOR GIVEN COMPUTER
AX = 5D03h
DS:DX -> DOS parameter list (see AX=5D00h), only computer ID used
Return: CF set on error
AX = error code (see AH=59h)
CF clear if successful
Note: error unless SHARE is loaded (calls [SysFileTable-30h]) (see AH=52h)
SeeAlso: AX=5D02h,AX=5D04h
----------215D04-----------------------------
INT 21 U - DOS 3.1+ internal - SHARE.EXE - CLOSE ALL FILES FOR GIVEN PROCESS
AX = 5D04h
DS:DX -> DOS parameter list (see AX=5D00h), only computer ID and
process ID fields used
Return: CF set on error
AX = error code (see AH=59h)
CF clear if successful
Note: error unless SHARE is loaded (calls [SysFileTable-2Ch]) (see AH=52h)
SeeAlso: AX=5D02h,AX=5D03h,INT 2F/AX=111Dh
----------215D05-----------------------------
INT 21 U - DOS 3.1+ internal - SHARE.EXE - GET OPEN FILE LIST ENTRY
AX = 5D05h
DS:DX -> DOS parameter list (see AX=5D00h)
DPL's BX = index of sharing record (see AH=52h)
DPL's CX = index of SFT in sharing record's SFT list
Return: CF clear if successful
ES:DI -> ASCIZ filename
BX = network machine number of SFT's owner
CX = number of locks held by SFT's owner
CF set if either index out of range
AX = 0012h (no more files)
Notes: error unless SHARE is loaded (calls [SysFileTable-18h]) (see AH=52h)
names are always canonical fully-qualified, such as returned by AH=60h
SeeAlso: AH=5Ch,AH=60h
----------215D06-----------------------------
INT 21 U - DOS 3.0+ internal - GET ADDRESS OF DOS SWAPPABLE DATA AREA
AX = 5D06h
Return: CF set on error
AX = error code (see AH=59h)
CF clear if successful
DS:SI -> nonreentrant data area (includes all three DOS stacks)
(critical error flag is first byte)
CX = size in bytes of area which must be swapped while in DOS
DX = size in bytes of area which must always be swapped
Notes: the Critical Error flag is used in conjunction with the InDOS flag
(see AH=34h) to determine when it is safe to enter DOS from a TSR
setting CritErr flag allows use of functions 50h/51h from INT 28h under
DOS 2.x by forcing use of correct stack
swapping the data area allows reentering DOS unless DOS is in a
critical section delimited by INT 2A/AH=80h and INT 2A/AH=81h,82h
under DOS 4.0, AX=5D0Bh should be used instead of this function
SeeAlso: AX=5D0Bh,INT 2A/AH=80h,INT 2A/AH=81h,INT 2A/AH=82h
Format of DOS 3.10-3.30 Swappable Data Area:
Offset Size Description
00h BYTE critical error flag
01h BYTE InDOS flag (count of active INT 21 calls)
02h BYTE drive on which current critical error occurred, or FFh
03h BYTE locus of last error
04h WORD extended error code of last error
06h BYTE suggested action for last error
07h BYTE class of last error
08h DWORD ES:DI pointer for last error
0Ch DWORD current DTA
10h WORD current PSP
12h WORD stores SP across an INT 23
14h WORD return code from last process termination (zerod after reading
with AH=4Dh)
16h BYTE current drive
17h BYTE extended break flag
---remainder need only be swapped if in DOS---
18h WORD value of AX on call to INT 21
1Ah WORD PSP segment for sharing/network
1Ch WORD network machine number for sharing/network (0000h = us)
1Eh WORD first usable memory block found when allocating memory
20h WORD best usable memory block found when allocating memory
22h WORD last usable memory block found when allocating memory
24h WORD memory size in paragraphs (used only during initialization)
26h WORD ???
28h BYTE INT 24 returned Fail
29h BYTE bit flags for allowable actions on INT 24
2Ah BYTE ??? flag
2Bh BYTE FFh if Ctrl-Break termination, 00h otherwise
2Ch BYTE ??? flag of some kind
2Dh BYTE ??? (doesn't seem to be referenced)
2Eh BYTE day of month
2Fh BYTE month
30h WORD year - 1980
32h WORD number of days since 1-1-1980
34h BYTE day of week (0 = Sunday)
35h BYTE working SFT pointer at SDA+2AAh is valid ???
36h BYTE safe to call INT 28 if nonzero
37h BYTE flag: if nonzero, INT 24 abort turned into INT 24 fail
(set only during process termination)
38h 26 BYTEs device driver request header (see INT 2F/AX=0802h)
52h DWORD pointer to device driver entry point (used in calling driver)
56h 22 BYTEs device driver request header
6Ch 22 BYTEs device driver request header
82h BYTE type of PSP copy (00h=simple for INT 21/AH=26h, FFh=make child)
83h BYTE ??? apparently not referenced by kernel
84h 3 BYTEs 24-bit user number (see AH=30h)
87h BYTE OEM number (see AH=30h)
88h 2 BYTEs ???
8Ah 6 BYTEs CLOCK$ transfer record (see AH=52h)
90h BYTE ??? buffer for single-byte I/O functions
91h BYTE ??? apparently not referenced by kernel
92h 128 BYTEs buffer for filename
112h 128 BYTEs buffer for filename
192h 21 BYTEs findfirst/findnext search data block (see AH=4Eh)
1A7h 32 BYTEs directory entry for found file
1C7h 81 BYTEs copy of current directory structure for drive being accessed
218h 11 BYTEs FCB-format filename for device name comparison
223h BYTE unused???
224h 11 BYTEs wildcard destination specification for rename (FCB format)
22Fh 2 BYTEs ???
231h WORD ???
233h 5 BYTEs ???
238h BYTE extended FCB file attribute
239h BYTE type of FCB (00h regular, FFh extended)
23Ah BYTE directory search attributes
23Bh BYTE file open mode???
23Ch BYTE ??? flag bits 0 and 4
23Dh BYTE ??? flag or counter
23Eh BYTE ??? flag
23Fh BYTE flag indicating how DOS function was invoked
(00h = direct INT 20/INT 21, FFh = server call AX=5D00h)
240h BYTE ???
241h BYTE ??? flag
242h BYTE flag: 00h if read, 01h if write
243h BYTE drive number for ???
244h BYTE ???
245h BYTE ??? flag or counter
246h BYTE line edit (AH=0Ah) insert mode flag (nonzero = on)
247h BYTE canonicalized filename referred to existing file/dir if FFh
248h BYTE ??? flag or counter
249h BYTE type of process termination (00h-03h) (see AH=4Dh)
24Ah BYTE ??? flag
24Bh BYTE value with which to replace first byte of deleted file's name
(normally E5h, but 00h as described under INT 21/AH=13h)
24Ch DWORD pointer to Drive Parameter Block for critical error invocation
250h DWORD pointer to stack frame containing user registers on INT 21
254h WORD stores SP across INT 24
256h DWORD pointer to DOS Drive Parameter Block for ???
25Ah WORD ???
25Ch WORD ??? temp
25Eh WORD ??? flag (only low byte referenced)
260h WORD ??? temp
262h BYTE Media ID byte returned by AH=1Bh,1Ch
263h BYTE ??? (doesn't seem to be referenced)
264h DWORD pointer to device header
268h DWORD pointer to current SFT
26Ch DWORD pointer to current directory structure for drive being accessed
270h DWORD pointer to caller's FCB
274h WORD number of SFT to which file being opened will refer
276h WORD temporary storage for file handle
278h DWORD pointer to a JFT entry in process handle table (see AH=26h)
27Ch WORD offset in DOS DS of first filename argument
27Eh WORD offset in DOS DS of second filename argument
280h WORD offset of last component in pathname or FFFFh
282h WORD ??? offset of transfer address???
284h WORD ??? relative cluster within file being accessed ???
286h WORD ??? absolute cluster number being accessed ???
288h WORD ??? current sector number
28Ah WORD ??? current cluster number
28Ch WORD ??? current offset in file DIV bytes per sector
28Eh 2 BYTEs ???
290h WORD ??? current offset in file MOD bytes per sector
292h DWORD current offset in file
296h WORD ???
298h WORD ???
29Ah WORD ???
29Ch WORD ???
29Eh WORD ???
2A0h WORD ???
2A2h DWORD number of bytes appended to file
2A6h DWORD pointer to ??? disk buffer
2AAh DWORD pointer to working SFT
2AEh WORD used by INT 21 dispatcher to store caller's BX
2B0h WORD used by INT 21 dispatcher to store caller's DS
2B2h WORD temporary storage while saving/restoring caller's registers
2B4h DWORD pointer to prev call frame (offset 250h) if INT 21 reentered
also switched to for duration of INT 24
2B8h 21 BYTEs FindFirst search data for source file(s) of a rename operation
(see AH=4Eh)
2CDh 32 BYTEs directory entry for file being renamed
2EDh 331 BYTEs critical error stack
403h 35 BYTEs scratch SFT
438h 384 BYTEs disk stack (functions greater than 0Ch, INT 25,INT 26)
5B8h 384 BYTEs character I/O stack (functions 01h through 0Ch)
---DOS 3.2,3.3 only---
738h BYTE device driver lookahead flag (see AH=64h)
739h BYTE ??? looks like a drive number
73Ah BYTE ??? flag of some kind
73Ah BYTE ???
----------215D07-----------------------------
INT 21 U - DOS 3.1+ network - GET REDIRECTED PRINTER MODE
AX = 5D07h
Return: DL = mode
00h redirected output is combined
01h redirected output in separate print jobs
SeeAlso: AX=5D08h,AX=5D09h,INT 2F/AX=1125h
----------215D08-----------------------------
INT 21 U - DOS 3.1+ network - SET REDIRECTED PRINTER MODE
AX = 5D08h
DL = mode
00h redirected output is combined
01h redirected output placed in separate jobs, start new print job
now
SeeAlso: AX=5D07h,AX=5D09h,INT 2F/AX=1125h
----------215D09-----------------------------
INT 21 U - DOS 3.1+ network - FLUSH REDIRECTED PRINTER OUTPUT
AX = 5D09h
Note: forces redirected printer output to be printed, and starts a new print
job
SeeAlso: AX=5D07h,AX=5D08h,INT 2F/AX=1125h
----------215D0A-----------------------------
INT 21 - DOS 3.1+ - SET EXTENDED ERROR INFORMATION
AX = 5D0Ah
DS:DX -> 11-word DOS parameter list (see AX=5D00h)
Return: nothing. next call to AH=59h will return values from fields AX,BX,CX,
DX,DI, and ES in corresponding registers
Note: documented for DOS 5+, but undocumented in earlier versions
SeeAlso: AH=59h
----------215D0B-----------------------------
INT 21 U - DOS 4.x only internal - GET DOS SWAPPABLE DATA AREAS
AX = 5D0Bh
Return: CF set on error
AX = error code (see AH=59h)
CF clear if successful
DS:SI -> swappable data area list (see below)
Note: copying and restoring the swappable data areas allows DOS to be
reentered unless it is in a critical section delimited by calls to
INT 2A/AH=80h and INT 2A/AH=81h,82h
SeeAlso: AX=5D06h,INT 2A/AH=80h,INT 2A/AH=81h,INT 2A/AH=82h
Format of DOS 4.x swappable data area list:
Offset Size Description
00h WORD count of data areas
02h N BYTEs "count" copies of data area record
Offset Size Description
00h DWORD address
04h WORD length and type
bit 15 set if swap always, clear if swap in DOS
bits 14-0: length in bytes
Format of DOS 4.0-5.0 swappable data area:
Offset Size Description
00h BYTE critical error flag
01h BYTE InDOS flag (count of active INT 21 calls)
02h BYTE drive on which current critical error occurred or FFh
03h BYTE locus of last error
04h WORD extended error code of last error
06h BYTE suggested action for last error
07h BYTE class of last error
08h DWORD ES:DI pointer for last error
0Ch DWORD current DTA
10h WORD current PSP
12h WORD stores SP across an INT 23
14h WORD return code from last process termination (zerod after reading
with AH=4Dh)
16h BYTE current drive
17h BYTE extended break flag
18h 2 BYTEs ???
---remainder need only be swapped if in DOS---
1Ah WORD value of AX on call to INT 21
1Ch WORD PSP segment for sharing/network
1Eh WORD network machine number for sharing/network (0000h = us)
20h WORD first usable memory block found when allocating memory
22h WORD best usable memory block found when allocating memory
24h WORD last usable memory block found when allocating memory
26h WORD memory size in paragraphs (used only during initialization)
28h WORD ???
2Ah BYTE ???
2Bh BYTE ???
2Ch BYTE ???
2Dh BYTE ???
2Eh BYTE ???
2Fh BYTE ??? (doesn't seem to be referenced)
30h BYTE day of month
31h BYTE month
32h WORD year - 1980
34h WORD number of days since 1-1-1980
36h BYTE day of week (0 = Sunday)
37h BYTE ???
38h BYTE ???
39h BYTE ???
3Ah 30 BYTEs device driver request header (see INT 2F/AX=0802h)
58h DWORD pointer to device driver entry point (used in calling driver)
5Ch 22 BYTEs device driver request header
72h 30 BYTEs device driver request header
90h 6 BYTEs ???
96h 6 BYTEs CLOCK$ transfer record (see AH=52h)
9Ch 2 BYTEs ???
9Eh 128 BYTEs buffer for filename
11Eh 128 BYTEs buffer for filename
19Eh 21 BYTEs findfirst/findnext search data block (see AH=4Eh)
1B3h 32 BYTEs directory entry for found file
1D3h 88 BYTEs copy of current directory structure for drive being accessed
22Bh 11 BYTEs FCB-format filename for device name comparison
236h BYTE ???
237h 11 BYTEs wildcard destination specification for rename (FCB format)
242h 2 BYTEs ???
244h WORD ???
246h 5 BYTEs ???
24Bh BYTE extended FCB file attributes
24Ch BYTE type of FCB (00h regular, FFh extended)
24Dh BYTE directory search attributes
24Eh BYTE file open mode
24Fh BYTE ??? flag bits
250h BYTE ??? flag or counter
251h BYTE ??? flag
252h BYTE flag indicating how DOS function was invoked
(00h = direct INT 20/INT 21, FFh = server call AX=5D00h)
253h BYTE ???
254h BYTE ???
255h BYTE ???
256h BYTE ???
257h BYTE ???
258h BYTE ???
259h BYTE ???
25Ah BYTE canonicalized filename referred to existing file/dir if FFh
25Bh BYTE ???
25Ch BYTE type of process termination (00h-03h)
25Dh BYTE ???
25Eh BYTE ???
25Fh BYTE ???
260h DWORD pointer to Drive Parameter Block for critical error invocation
264h DWORD pointer to stack frame containing user registers on INT 21
268h WORD stores SP???
26Ah DWORD pointer to DOS Drive Parameter Block for ???
26Eh WORD segment of disk buffer
270h WORD ???
272h WORD ???
274h WORD ???
276h WORD ???
278h BYTE Media ID byte returned by AH=1Bh,1Ch
279h BYTE ??? (doesn't seem to be referenced)
27Ah DWORD pointer to ???
27Eh DWORD pointer to current SFT
282h DWORD pointer to current directory structure for drive being accessed
286h DWORD pointer to caller's FCB
28Ah WORD SFT index to which file being opened will refer
28Ch WORD temporary storage for file handle
28Eh DWORD pointer to a JFT entry in process handle table (see AH=26h)
292h WORD offset in DOS DS of first filename argument
294h WORD offset in DOS DS of second filename argument
296h WORD ???
298h WORD ???
29Ah WORD ???
29Ch WORD ???
29Eh WORD ???
2A0h WORD ???
2A2h WORD ??? directory cluster number???
2A4h DWORD ???
2A8h DWORD ???
2ACh WORD ???
2AEh DWORD offset in file???
2B2h WORD ???
2B4h WORD bytes in partial sector
2B6h WORD number of sectors
2B8h WORD ???
2BAh WORD ???
2BCh WORD ???
2BEh DWORD number of bytes appended to file
2C2h DWORD pointer to ??? disk buffer
2C6h DWORD pointer to ??? SFT
2CAh WORD used by INT 21 dispatcher to store caller's BX
2CCh WORD used by INT 21 dispatcher to store caller's DS
2CEh WORD temporary storage while saving/restoring caller's registers
2D0h DWORD pointer to prev call frame (offset 264h) if INT 21 reentered
also switched to for duration of INT 24
2D4h WORD open mode/action for INT 21/AX=6C00h
2D6h BYTE ??? (set to 00h by INT 21h dispatcher, 02h when a read is
performed, and 01h or 03h by INT 21/AX=6C00h)
2D7h WORD ??? apparently unused
2D9h DWORD stored ES:DI for AX=6C00h
2DDh WORD extended file open action code (see AX=6C00h)
2DFh WORD extended file open attributes (see AX=6C00h)
2E1h WORD extended file open file mode (see AX=6C00h)
2E3h DWORD pointer to filename to open (see AX=6C00h)
2E7h WORD ???
2E9h WORD ???
2EBh BYTE ???
2ECh WORD stores DS during call to [List-of-Lists + 37h]
2EEh WORD ???
2F0h BYTE ???
2F1h WORD ??? bit flags
2F3h DWORD pointer to user-supplied filename
2F7h DWORD pointer to ???
2FBh WORD stores SS during call to [List-of-Lists + 37h]
2FDh WORD stores SP during call to [List-of-Lists + 37h]
2FFh BYTE flag, nonzero if stack switched in calling [List-of-Lists+37h]
300h 21 BYTEs FindFirst search data for source file(s) of a rename operation
(see AH=4Eh)
315h 32 BYTEs directory entry for file being renamed
335h 331 BYTEs critical error stack
480h 384 BYTEs disk stack (functions greater than 0Ch, INT 25,INT 26)
600h 384 BYTEs character I/O stack (functions 01h through 0Ch)
780h BYTE device driver lookahead flag (see AH=64h)
781h BYTE ??? looks like a drive number
782h BYTE ??? flag of some kind
783h BYTE ???
784h WORD ???
786h WORD ???
788h WORD ???
78Ah WORD ???
----------215E00-----------------------------
INT 21 - DOS 3.1+ network - GET MACHINE NAME
AX = 5E00h
DS:DX -> 16-byte buffer for ASCIZ machine name
Return: CF clear if successful
CH = validity
00h name invalid
nonzero valid
CL = NetBIOS number for machine name
DS:DX buffer filled with blank-paded name
CF set on error
AX = error code (01h) (see AH=59h)
Note: supported by OS/2 v1.3+ compatibility box, PC-NFS
SeeAlso: AX=5E01h
----------215E01CH00-------------------------
INT 21 - DOS 3.1+ network - SET MACHINE NAME
AX = 5E01h
CH = 00h undefine name (make it invalid)
<> 0 define name
CL = name number
DS:DX -> 15-character blank-padded ASCIZ name
SeeAlso: AX=5E00h
----------215E02-----------------------------
INT 21 - DOS 3.1+ network - SET NETWORK PRINTER SETUP STRING
AX = 5E02h
BX = redirection list index (see AX=5F02h)
CX = length of setup string
DS:SI -> setup string
Return: CF clear if successful
CF set on error
AX = error code (01h) (see AH=59h)
SeeAlso: AX=5E03h,INT 2F/AX=111Fh
----------215E03-----------------------------
INT 21 - DOS 3.1+ network - GET NETWORK PRINTER SETUP STRING
AX = 5E03h
BX = redirection list index (see AX=5F02h)
ES:DI -> 64-byte buffer for setup string
Return: CF clear if successful
CX = length of setup string
ES:DI buffer filled
CF set on error
AX = error code (01h) (see AH=59h)
SeeAlso: AX=5E02h,INT 2F/AX=111Fh
----------215E04-----------------------------
INT 21 - DOS 3.1+ network - SET PRINTER MODE
AX = 5E04h
BX = redirection list index (see AX=5F02h)
DX = mode
bit 0: set if binary, clear if text (tabs expanded to blanks)
Return: CF set on error
AX = error code (see AH=59h)
CF clear if successful
Note: calls INT 2F/AX=111Fh with 5E04h on stack
SeeAlso: AX=5E05h,INT 2F/AX=111Fh
----------215E05-----------------------------
INT 21 - DOS 3.1+ network - GET PRINTER MODE
AX = 5E05h
BX = redirection list index (see AX=5F02h)
Return: CF set on error
AX = error code (see AH=59h)
CF clear if successful
DX = printer mode (see AX=5E04h)
Note: calls INT 2F/AX=111Fh with 5E05h on stack
SeeAlso: AX=5E04h,INT 2F/AX=111Fh
----------215F00-----------------------------
INT 21 - DOS 3.1+ network - GET REDIRECTION MODE
AX = 5F00h
BL = redirection type
03h printer
04h disk drive
Return: CF set on error
AX = error code (see AH=59h)
CF clear if successful
BH = redirection state
00h off
01h on
Note: calls INT 2F/AX=111Eh with AX on top of the stack
SeeAlso: AX=5F01h,INT 2F/AX=111Eh
----------215F01-----------------------------
INT 21 - DOS 3.1+ network - SET REDIRECTION MODE
AX = 5F01h
BL = redirection type
03h printer
04h disk drive
BH = redirection state
00h off
01h on
Return: CF set on error
AX = error code (see AH=59h)
CF clear if successful
Notes: when redirection is off, the local device (if any) rather than the
remote device is used
calls INT 2F/AX=111Eh with AX on top of the stack
SeeAlso: AX=5F00h,INT 2F/AX=111Eh
----------215F02-----------------------------
INT 21 - DOS 3.1+ network, Banyan VINES, PC-NFS - GET REDIRECTION LIST ENTRY
AX = 5F02h
BX = redirection list index
CX = 0000h (LANtastic)
DS:SI -> 16-byte buffer for ASCIZ device name
ES:DI -> 128-byte buffer for ASCIZ network name
Return: CF clear if successful
BH = device status
00h valid
01h invalid
BL = device type
03h printer
04h disk drive
CX = user data previously set with AX=5F03h
DS:SI and ES:DI buffers filled
DX,BP destroyed
CF set on error
AX = error code (01h,12h) (see AH=59h)
Notes: this function is passed through to INT 2F/AX=111Eh
error code 12h is returned if BX is greater than the size of the list
also supported by Banyan VINES, PC-NFS, and LANtastic
SeeAlso: AX=5F03h,INT 2F/AX=111Eh
----------215F03-----------------------------
INT 21 - DOS 3.1+ network, Banyan VINES, LANtastic - REDIRECT DEVICE
AX = 5F03h
BL = device type
03h printer
04h disk drive
CX = user data to save
0000h for LANtastic
DS:SI -> ASCIZ local device name (16 bytes max)
ES:DI -> ASCIZ network name + ASCIZ password (128 bytes max total)
Return: CF clear if successful
CF set on error
AX = error code (01h,03h,05h,08h,0Fh,12h) (see AH=59h)
Notes: if device type is disk drive, DS:SI must point at either a null string
or a string consisting the drive letter followed by a colon; if a
null string, the network attempts to access the destination without
redirecting a local drive
calls INT 2F/AX=111Eh with AX on top of the stack
SeeAlso: AX=5F02h,AX=5F04h,INT 2F/AX=111Eh
----------215F04-----------------------------
INT 21 - DOS 3.1+ network, Banyan VINES, LANtastic - CANCEL REDIRECTION
AX = 5F04h
DS:SI -> ASCIZ device name or path
Return: CF clear if successful
CF set on error
AX = error code (01h,03h,05h,08h,0Fh,12h) (see AH=59h)
Notes: the DS:SI string must be either a local device name, a drive letter
followed by a colon, or a network directory beginning with two
backslashes
calls INT 2F/AX=111Eh with AX on top of the stack
SeeAlso: AX=5F03h,INT 2F/AX=111Eh
----------215F05-----------------------------
INT 21 - DOS 4.x + Microsoft Networks - GET REDIRECTION LIST EXTENDED ENTRY
AX = 5F05h
BX = redirection list index
DS:SI -> buffer for ASCIZ source device name
ES:DI -> buffer for destination ASCIZ network path
Return: CF set on error
AX = error code (see AH=59h)
CF clear if successful
BH = device status flag (bit 0 clear if valid)
BL = device type (03h if printer, 04h if drive)
CX = stored parameter value (user data)
BP = NETBIOS local session number
DS:SI buffer filled
ES:DI buffer filled
Notes: the local session number allows sharing the redirector's session number
if an error is caused on the NETBIOS LSN, the redirector may be unable
to correctly recover from errors
calls INT 2F/AX=111Eh with AX on top of the stack
SeeAlso: AX=5F06h"Network",INT 2F/AX=111Eh
----------215F05-----------------------------
INT 21 - STARLITE architecture - MAP LOCAL DRIVE LETTER TO REMOTE FILE SYSTEM
AX = 5F05h
DL = drive number (0=A:)
DS:SI -> ASCIZ name of the object to map the drive to
Return: CF set on error
AX = error code (see AH=59h)
CF clear if successful
SeeAlso: AX=5F06h"STARLITE"
----------215F06-----------------------------
INT 21 U - Network - GET REDIRECTION LIST???
AX = 5F06h
???
Return: ???
Notes: appears to be similar to AX=5F02h and AX=5F05h
calls INT 2F/AX=111Eh with AX on top of the stack
SeeAlso: AX=5F05h"DOS",INT 2F/AX=111Eh
----------215F06-----------------------------
INT 21 - STARLITE architecture - UNMAP DRIVE LETTER
AX = 5F06h
DL = drive to be unmapped (0=A:)
Return: CF set on error
AX = error code (see AH=59h)
CF clear if successful
SeeAlso: AX=5F05h"STARLITE"
----------215F07-----------------------------
INT 21 - DOS 5.0 - ENABLE DRIVE
AX = 5F07h
DL = drive number (0=A:)
Return: CF clear if successful
CF set on error
AX = error code (0Fh) (see AH=59h)
Note: simply sets the "valid" bit in the drive's CDS
SeeAlso: AH=52h,AX=5F08h"DOS"
----------215F07-----------------------------
INT 21 - STARLITE architecture - MAKE NAMED OBJECT AVAILABLE ON NETWORK
AX = 5F07h
DS:SI -> ASCIZ name of object to offer to network
ES:DI -> ASCIZ name under which object will be known on the network
MUST begin with three slashes
Return: CF set on error
AX = error code (see AH=59h)
CF clear if successful
SeeAlso: AX=5F08h"STARLITE"
----------215F08-----------------------------
INT 21 - DOS 5.0 - DISABLE DRIVE
AX = 5F08h
DL = drive number (0=A:)
Return: CF clear if successful
CF set on error
AX = error code (0Fh) (see AH=59h)
Note: simply clears the "valid" bit in the drive's CDS
SeeAlso: AH=52h,AX=5F07h"DOS"
----------215F08-----------------------------
INT 21 - STARLITE architecture - REMOVE GLOBAL NETWORK NAME OF OBJECT
AX = 5F08h
DS:SI -> ASCIZ network name (not local name) of object to unshare
Return: CF set on error
AX = error code (see AH=59h)
CF clear if successful
SeeAlso: AX=5F07h"STARLITE"
----------215F09-----------------------------
INT 21 - STARLITE architecture - BIND TO NETWORK DEVICE
AX = 5F09h
DS:DX -> ASCIZ name of the device driver to attach to
Return: CF set on error
AX = error code (see AH=59h)
CF clear if successful
Note: the STARLITE distributed file system can attach to multiple networks
simultaneously
SeeAlso: AX=5F0Ah
----------215F0A-----------------------------
INT 21 - STARLITE architecture - DETACH FROM NETWORK DEVICE
AX = 5F0Ah
DS:DX -> ASCIZ name of device driver to detach from
Return: CF set on error
AX = error code (see AH=59h)
CF clear if successful
SeeAlso: AX=5F09h
----------215F32-----------------------------
INT 21 - LAN Manager Enhanced DOS API local interface - DosQNmPipeInfo
AX = 5F32h
???
Return: ???
Note: supported by Novell DOS Named Pipe Extender
SeeAlso: AX=5F33h,AX=5F34h
----------215F33-----------------------------
INT 21 - LAN Manager Enhanced DOS API local interface - DosQNmPHandState
AX = 5F33h
???
Return: ???
Note: supported by Novell DOS Named Pipe Extender
SeeAlso: AX=5F32h,AX=5F34h
----------215F34-----------------------------
INT 21 - LAN Manager Enhanced DOS API local interface - DosSetNmPHandState
AX = 5F34h
???
Return: ???
Note: supported by Novell DOS Named Pipe Extender
SeeAlso: AX=5F32h,AX=5F33h,AX=5F36h
----------215F35-----------------------------
INT 21 - LAN Manager Enhanced DOS API local interface - DosPeekNmPipe
AX = 5F35h
???
Note: supported by Novell DOS Named Pipe Extender
Return: ???
SeeAlso: AX=5F38h,AX=5F39h,AX=5F51h
----------215F36-----------------------------
INT 21 - LAN Manager Enhanced DOS API local interface - DosTransactNmPipe
AX = 5F36h
???
Return: ???
Note: supported by Novell DOS Named Pipe Extender
SeeAlso: AX=5F34h,AX=5F37h
----------215F37-----------------------------
INT 21 - LAN Manager Enhanced DOS API local interface - DosCallNmPipe
AX = 5F37h
???
Return: ???
Note: supported by Novell DOS Named Pipe Extender
SeeAlso: AX=5F36h,AX=5F38h
----------215F38-----------------------------
INT 21 - LAN Manager Enhanced DOS API local interface - DosWaitNmPipe
AX = 5F38h
???
Return: ???
Note: supported by Novell DOS Named Pipe Extender
SeeAlso: AX=5F37h,AX=5F39h
----------215F39-----------------------------
INT 21 - LAN Manager Enhanced DOS API local interface - DosRawReadNmPipe
AX = 5F39h
???
Return: ???
Note: supported by Novell DOS Named Pipe Extender
SeeAlso: AX=5F35h,AX=5F3Ah,INT 2F/AX=1186h
----------215F3A-----------------------------
INT 21 - LAN Manager Enhanced DOS API local interface - DosRawWriteNmPipe
AX = 5F3Ah
???
Return: ???
Note: supported by Novell DOS Named Pipe Extender
SeeAlso: AX=5F3Bh,INT 2F/AX=118Fh
----------215F3B-----------------------------
INT 21 - LAN Manager Enhanced DOS API local interface - NetHandleSetInfo
AX = 5F3Bh
???
Return: ???
SeeAlso: AX=5F3Ch
----------215F3C-----------------------------
INT 21 - LAN Manager Enhanced DOS API local interface - NetHandleGetInfo
AX = 5F3Ch
???
Return: ???
SeeAlso: AX=5F3Bh
----------215F40-----------------------------
INT 21 - LAN Manager Enhanced DOS API local interface - NetMessageBufferSend
AX = 5F40h
???
Return: ???
----------215F42-----------------------------
INT 21 - LAN Manager Enhanced DOS API local interface - NetServiceControl
AX = 5F42h
???
Return: ???
----------215F44-----------------------------
INT 21 - LAN Manager Enhanced DOS API local interface - NetWkstaGetInfo
AX = 5F44h
???
Return: ???
SeeAlso: AX=5F45h,AX=5F49h
----------215F45-----------------------------
INT 21 - LAN Manager Enhanced DOS API local interface - NetWkstaSetInfo
AX = 5F45h
???
Return: ???
SeeAlso: AX=5F44h
----------215F46-----------------------------
INT 21 - LAN Manager Enhanced DOS API local interface - NetUseEnum
AX = 5F46h
???
Return: ???
SeeAlso: AX=5F47h,AX=5F48h,AX=5F4Ch
----------215F47-----------------------------
INT 21 - LAN Manager Enhanced DOS API local interface - NetUseAdd
AX = 5F47h
???
Return: ???
SeeAlso: AX=5F46h,AX=5F48h
----------215F48-----------------------------
INT 21 - LAN Manager Enhanced DOS API local interface - NetUseDel
AX = 5F48h
???
Return: ???
SeeAlso: AX=5F46h,AX=5F48h,AX=5F49h
----------215F49-----------------------------
INT 21 - LAN Manager Enhanced DOS API local interface - NetUseGetInfo
AX = 5F49h
???
Return: ???
SeeAlso: AX=5F44h,AX=5F47h
----------215F4A-----------------------------
INT 21 - LAN Manager Enhanced DOS API local interface - NetRemoteCopy
AX = 5F4Ah
???
Return: ???
SeeAlso: AX=5F4Bh
----------215F4B-----------------------------
INT 21 - LAN Manager Enhanced DOS API local interface - NetRemoteMove
AX = 5F4Bh
???
Return: ???
SeeAlso: AX=5F4Ah
----------215F4C-----------------------------
INT 21 - LAN Manager Enhanced DOS API local interface - NetServerEnum
AX = 5F4Ch
???
Return: ???
Note: supported by Novell DOS Named Pipe Extender
SeeAlso: AX=5F53h
----------215F4D-----------------------------
INT 21 - LAN Manager Enhanced DOS API local interface - DosMakeMailslot
AX = 5F4Dh
???
Return: ???
SeeAlso: AX=5F4Eh,AX=5F4Fh,AX=5F50h,AX=5F51h
----------215F4E-----------------------------
INT 21 - LAN Manager Enhanced DOS API local interface - DosDeleteMailslot
AX = 5F4Eh
???
Return: ???
SeeAlso: AX=5F4Dh,AX=5F4Fh
----------215F4F-----------------------------
INT 21 - LAN Manager Enhanced DOS API local interface - DosMailslotInfo
AX = 5F4Fh
???
Return: ???
SeeAlso: AX=5F4Dh,AX=5F4Eh,AX=5F50h
----------215F50-----------------------------
INT 21 - LAN Manager Enhanced DOS API local interface - DosReadMailslot
AX = 5F50h
???
Return: ???
SeeAlso: AX=5F4Dh,AX=5F4Fh,AX=5F51h,AX=5F52h
----------215F51-----------------------------
INT 21 - LAN Manager Enhanced DOS API local interface - DosPeekMailslot
AX = 5F51h
???
Return: ???
SeeAlso: AX=5F35h,AX=5F4Fh,AX=5F50h,AX=5F52h
----------215F52-----------------------------
INT 21 - LAN Manager Enhanced DOS API local interface - DosWriteMailslot
AX = 5F52h
???
Return: ???
SeeAlso: AX=5F4Fh,AX=5F50h,AX=5F51h
----------215F53-----------------------------
INT 21 - LAN Manager Enhanced DOS API local interface - NetServerEnum2
AX = 5F53h
???
Return: ???
SeeAlso: AX=5F4Ch
----------215F80-----------------------------
INT 21 - LANtastic - GET LOGIN ENTRY
AX = 5F80h
BX = login entry index (0-based)
ES:DI -> 16-byte buffer for machine name
Return: CF clear if successful
buffer filled with machine name ("\\" prefix removed)
DL = adapter number (v3+)
CF set on error
AX = error code
Note: the login entry index corresponds to the value BX used in AX=5F83h
SeeAlso: AX=5F83h
----------215F81-----------------------------
INT 21 - LANtastic - LOGIN TO SERVER
AX = 5F81h
ES:DI -> ASCIZ login path followed immediately by ASCIZ password
BL = adapter number
FFh try all valid adapters
00h-07h try only specified adapter
Return: CF clear if successful
CF set on error
AX = error code
Notes: login path is of form "\\machine\username"
if no password is used, the string at ES:DI must be terminated with
three NULs for compatibility with LANtastic v3.0.
SeeAlso: AX=5F82h,AX=5F84h
----------215F82-----------------------------
INT 21 - LANtastic - LOGOUT FROM SERVER
AX = 5F82h
ES:DI -> ASCIZ server name (in form "\\machine")
Return: CF clear if successful
CF set on error
AX = error code
SeeAlso: AX=5F81h,AX=5F88h,AX=5FCBh
----------215F83-----------------------------
INT 21 - LANtastic - GET USERNAME ENTRY
AX = 5F83h
BX = login entry index (0-based)
ES:DI -> 16-byte buffer for username currently logged into
Return: CF clear if successful
DL = adapter number (v3+)
CF set on error
AX = error code
Note: the login entry index corresponds to the value BX used in AX=5F80h
SeeAlso: AX=5F80h
----------215F84-----------------------------
INT 21 - LANtastic - GET INACTIVE SERVER ENTRY
AX = 5F84h
BX = server index not currently logged into
ES:DI -> 16-byte buffer for server name which is available for logging
in to ("\\" prefix omitted)
Return: CF clear if successful
DL = adapter number to non-logged in server is on
CF set on error
AX = error code
SeeAlso: AX=5F81h
----------215F85-----------------------------
INT 21 - LANtastic - CHANGE PASSWORD
AX = 5F85h
ES:DI -> buffer containing "\\machine\oldpassword" 00h "newpassword"00h
Return: CF clear if successful
CF set on error
AX = error code
Notes: must be logged into the named machine
this function is illegal for group accounts
----------215F86-----------------------------
INT 21 - LANtastic - DISABLE ACCOUNT
AX = 5F86h
ES:DI -> ASCIZ machine name and password in form "\\machine\password"
Return: CF clear if successful
CF set on error
AX = error code
Note: must be logged into the named machine and concurrent logins set to 1
by NET_MGR. Requires system manager to re-enable account.
----------215F87-----------------------------
INT 21 - LANtastic v3+ - GET ACCOUNT
AX = 5F87h
DS:SI -> 128-byte buffer for account information (see below)
ES:DI -> ASCIZ machine name in form "\\machine"
Return: CF clear if successful
CF set on error
AX = error code
BX destroyed
Note: must be logged into the specified machine
Format of user account structure:
Offset Size Description
00h 16 BYTEs blank-padded username (zero-padded for v4.x)
10h 16 BYTEs reserved (00h)
20h 32 BYTEs user description
40h BYTE privilege bits
bit 7: bypass access control lists
6: bypass queue protection
5: treat as local process
4: bypass mail protection
3: allow audit entry creation
2: system manager
0: user cannot change password
41h BYTE maximum concurrent users
42h 42 BYTEs bit map for disallowed half hours, beginning on Sunday
(bit set if half-hour not an allowed time)
6Ch WORD internal (0002h)
6Eh 2 WORDs last login time
72h 2 WORDs account expiration date (MSDOS-format year/month:day)
76h 2 WORDs password expiration date (0 = none)
7Ah BYTE number of days to extend password after change (1-31)
00h if no extension required
---v3.x---
7Bh 5 BYTEs reserved
---v4.x---
7Bh BYTE storage for first letter of user name when deleted (first
character is changed to 00h when deleting account)
7Ch BYTE extended privileges
7Dh 3 BYTEs reserved
----------215F88-----------------------------
INT 21 - LANtastic v4.0+ - LOGOUT FROM ALL SERVERS
AX = 5F88h
Return: CF clear if successful
CF set on error
AX = error code
SeeAlso: AX=5F82h
----------215F97-----------------------------
INT 21 - LANtastic - COPY FILE
AX = 5F97h
CX:DX = number of bytes to copy (FFFFFFFFh = entire file)
SI = source file handle
DI = destination file handle
Return: CF clear if successful
DX:AX = number of bytes copied
CF set on error
AX = error code
Note: copy is performed by server
----------215F98-----------------------------
INT 21 - LANtastic - SEND UNSOLICITED MESSAGE
AX = 5F98h
DS:SI -> message buffer (see below)
Return: CF clear if successful
CF set on error
AX = error code
Note: v4.1- return no errors
SeeAlso: AX=5F99h
Format of message buffer:
Offset Size Description
00h BYTE reserved
01h BYTE message type
00h general
01h server warning
02h-7Fh reserved
80h-FFh user-defined
02h 16 BYTEs ASCIZ destination machine name
12h 16 BYTEs ASCIZ server name which user must be logged into
22h 16 BYTEs ASCIZ user name
32h 16 BYTEs ASCIZ originating machine name (filled in when received)
42h 80 BYTEs message text
----------215F99-----------------------------
INT 21 - LANtastic - GET LAST RECEIVED UNSOLICITED MESSAGE
AX = 5F99h
ES:DI -> messsage buffer (see AX=5F98h for format)
Return: CF clear if successful
CF set on error
AX = error code
SeeAlso: AX=5F98h
----------215F9A-----------------------------
INT 21 - LANtastic - GET MESSAGE PROCESSING FLAGS
AX = 5F9Ah
Return: CF clear if successful
DL = bits describing processing for received unsolicited messages
bit 0: beep before message is delivered
1: deliver message to message service
2: pop up message automatically (v3+)
CF set on error
AX = error code
SeeAlso: AX=5F9Bh,AX=5F9Ch,AX=5F9Dh
----------215F9B-----------------------------
INT 21 - LANtastic - SET MESSAGE PROCESSING FLAG
AX = 5F9Bh
DL = bits describing processing for received unsolicited messages
(see AX=5F9Ah)
Return: CF clear if successful
CF set on error
AX = error code
SeeAlso: AX=5F9Ah,AX=5F9Eh
----------215F9C-----------------------------
INT 21 - LANtastic v3+ - POP UP LAST RECEIVED MESSAGE
AX = 5F9Ch
CX = time to leave on screen in clock ticks
DH = 0-based screen line on which to place message
Return: CF clear if successful
CF set on error
AX = error code (0Bh)
Notes: the original screen contents are restored when the message is removed
the message will not appear, and an error will be returned, if the
screen is in a graphics mode
SeeAlso: AX=5F9Ah
----------215F9D-----------------------------
INT 21 - LANtastic v4.1+ - GET REDIRECTOR CONTROL BITS
AX = 5F9Dh
Return: DL = redirector control bits
bit 7: set to notify on print job completion
SeeAlso: AX=5F9Ah,AX=5F9Eh
----------215F9E-----------------------------
INT 21 - LANtastic v4.1+ - SET REDIRECTOR CONTROL BITS
AX = 5F9Eh
DL = redirector control bits (see AH = 5F9Dh)
Return: nothing
SeeAlso: AX=5F9Bh,AX=5F9Dh
----------215FA0-----------------------------
INT 21 - LANtastic - GET QUEUE ENTRY
AX = 5FA0h
BX = queue entry index (0000h is first entry)
DS:SI -> buffer for queue entry (see below)
ES:DI -> ASCIZ server name in form "\\name"
Return: CF clear if successful
CF set on error
AX = error code
BX = entry index for next queue entry (BX-1 is current index)
SeeAlso: AX=5FA1h,AX=5FA2h
Format of queue entry:
Offset Size Description
00h BYTE status of entry
00h empty
01h being updated
02h being held
03h waiting for despool
04h being despooled
05h canceled
06h spooled file could not be accessed
07h destination could not be accessed
08h rush job
01h DWORD size of spooled file
05h BYTE type of entry
00h printer queue file
01h message
02h local file
03h remote file
04h to remote modem
05h batch processor file
06h BYTE output control
bit 6: don't delete (for mail)
bit 5: mail file contains voice mail (v3+)
bit 4: mail message has been read
bit 3: response has been requested for this mail
07h WORD number of copies
09h DWORD sequence number of queue entry
0Dh 48 BYTEs pathname of spooled file
3Dh 16 BYTEs user who spooled file
4Dh 16 BYTEs name of machine from which file was spooled
5Dh WORD date file was spooled (see AX=5700h)
5Fh WORD time file was spooled (see AX=5700h)
61h 17 BYTEs ASCIZ destination device or user name
72h 48 BYTEs comment field
----------215FA1-----------------------------
INT 21 - LANtastic - SET QUEUE ENTRY
AX = 5FA1h
BX = handle of opened queue entry
DS:SI -> queue entry (see AX=5FA0h)
Return: CF clear if successful
CF set on error
AX = error code
Notes: the only queue entry fields which may be changed are output control,
number of copies, destination device, and comment
the handle in BX is that from a create or open (INT 21/AH=3Ch,3Dh)
call on the file "\\server\\@MAIL" or "\\server\@name" (for
printer queue entries)
SeeAlso: AX=5FA0h,AX=5FA2h,AX=5FA9h
----------215FA2-----------------------------
INT 21 - LANtastic - CONTROL QUEUE
AX = 5FA2h
BL = control command
00h start despooling (privileged)
01h halt despooling (privileged)
02h halt despooling at end of job (privileged)
03h pause despooler at end of job (privileged)
04h print single job (privileged)
05h restart current job (privileged)
06h cancel the current job
07h hold queue entry
08h release a held queue entry
09h make queue entry a rushed job (privileged)
CX:DX = sequence number to control (commands 06h-09h)
DX = physical printer number (commands 00h-05h)
00h-02h LPT1-LPT3
03h,04h COM1,COM2
other all printers
ES:DI -> ASCIZ server name in form "\\machine"
Return: CF clear if successful
CF set on error
AX = error code
----------215FA3-----------------------------
INT 21 - LANtastic v3+ - GET PRINTER STATUS
AX = 5FA3h
BX = physical printer number (00h-02h = LPT1-LPT3, 03h-04h = COM1-COM2)
DS:SI -> buffer for printer status (see below)
ES:DI -> ASCIZ server name in form "\\machine"
Return: CF clear if successful
CF set on error
AX = error code
BX = next physical printer number
Note: you must be logged in to the specified server
Format of printer status:
Offset Size Description
00h BYTE printer state
bit 7: printer paused
bits 0-6: 0 printer disabled
1 will stop at end of job
2 print multiple jobs
01h WORD queue index of print job being despooled
FFFFh if not despooling--ignore all following fields
03h WORD actual characters per second being output
05h DWORD number of characters actually output so far
09h DWORD number of bytes read from spooled file so far
0Dh WORD copies remaining to print
----------215FA4-----------------------------
INT 21 - LANtastic v3+ - GET STREAM INFO
AX = 5FA4h
BX = 0-based stream index number
DS:SI -> buffer for stream information (see below)
ES:DI -> ASCIZ machine name in form "\\machine"
Return: CF clear if successful
CF set on error
AX = error code
BX = next stream number
SeeAlso: AX=5FA5h
Format of stream information:
Offset Size Description
00h BYTE queueing of jobs for logical printer (0=disabled,other=enabled)
01h 11 BYTEs logical printer resource template (may contain ? wildcards)
----------215FA5-----------------------------
INT 21 - LANtastic v3+ - SET STREAM INFO
AX = 5FA5h
BX = 0-based stream index number
DS:SI -> buffer containing stream information (see AX=5FA4h)
ES:DI -> ASCIZ machine name in form "\\machine"
Return: CF clear if successful
CF set on error
AX = error code
SeeAlso: AX=5FA4h
----------215FA7-----------------------------
INT 21 - LANtastic - CREATE USER AUDIT ENTRY
AX = 5FA7h
DS:DX -> ASCIZ reason code (max 8 bytes)
DS:SI -> ASCIZ variable reason string (max 128 bytes)
ES:DI -> ASCIZ machine name in form "\\machine"
Return: CF clear if successful
CF set on error
AX = error code
Note: you must be logged in to the specified server and have the "U"
privilege to execute this call
----------215FA9-----------------------------
INT 21 - LANtastic v4.1+ - SET EXTENDED QUEUE ENTRY
AX = 5FA9h
BX = handle of opened queue entry
DS:SI -> queue entry (see AX=5FA0h)
Return: CF clear if successful
CF set on error
AX = error code
Note: functions exactly the same as AX=5FA1h except the spooled filename is
also set. This call supports direct despooling.
SeeAlso: AX=5FA1h
----------215FB0-----------------------------
INT 21 - LANtastic - GET ACTIVE USER INFORMATION
AX = 5FB0h
BX = server login entry index
DS:SI -> buffer for active user entry (see below)
ES:DI -> ASCIZ machine name in form "\\server"
Return: CF clear if successful
CF set on error
AX = error code
BX = next login index
Format of active user entry:
Offset Size Description
00h WORD virtual circuit number
02h BYTE login state
bit 0: fully logged in
1: remote program load login
2: user has system manager privileges
3: user can create audit entries
4: bypass mail protection
5: treat as local process
6: bypass queue protection
7: bypass access control lists
03h BYTE last command issued (see below)
04h 5 BYTEs number of I/O bytes (40-bit unsigned number)
09h 3 BYTEs number of server requests (24-bit unsigned)
0Ch 16 BYTEs name of user who is logged in
1Ch 16 BYTEs name of remote logged in machine
2Ch BYTE extended privileges (v4+???)
bit 0: user cannot change his password
2Dh WORD time left in minutes (0000h = unlimited) (v4+???)
Values for last command:
00h login
01h process termination
02h open file
03h close file
04h create file
05h create new file
06h create unique file
07h commit data to disk
08h read file
09h write file
0Ah delete file
0Bh set file attributes
0Ch lock byte range
0Dh unlock byte range
0Eh create subdirectory
0Fh remove subdirectory
10h rename file
11h find first matching file
12h find next matching file
13h get disk free space
14h get a queue entry
15h set a queue entry
16h control the queue
17h return login information
18h return link description
19h seek on file
1Ah get server's time
1Bh create audit entry
1Ch open file in multitude of modes
1Dh change password
1Eh disable account
1Fh local server file copy
---v3+---
20h get username from account file
21h translate server's logical path
22h make indirect file
23h get indirect file contents
24h get physical printer status
25h get logical print stream info
26h set logical print stream info
27h get user's account record
---v4+---
28h request server shutdown
29h cancel server shutdown
2Ah stuff server's keyboard
2Bh write then commit data to disk
2Ch set extended queue entry
2Dh terminate user from server
2Eh enable/disable logins
2Fh flush server caches
30h change username
31h get extended queue entry
(same as get queue, but can return named fields blanked)
----------215FB1-----------------------------
INT 21 - LANtastic - GET SHARED DIRECTORY INFORMATION
AX = 5FB1h
DS:SI -> 64-byte buffer for link description
ES:DI -> ASCIZ machine and shared directory name in form
"\\machine\shared-resource"
Return: CF clear if successful
CX = access control list privilege bits for requesting user
bit 4: (I) allow expansion of indirect files
5: (A) allow attribute changing
6: (P) allow physical access to device
7: (E) allow program execution
8: (N) allow file renaming
9: (K) allow directory deletion
10: (D) allow file deletion
11: (L) allow file/directory lookups
12: (M) allow directory creation
13: (C) allow file creation
14: (W) allow open for write and writing
15: (R) allow open for read and reading
CF set on error
AX = error code
----------215FB2-----------------------------
INT 21 - LANtastic v3+ - GET USERNAME FROM ACCOUNT FILE
AX = 5FB2h
BX = username entry index (0 for first)
DS:SI -> 16-byte buffer for username
ES:DI -> ASCIZ server name in form "\\machine"
Return: CF clear if successful
CF set on error
AX = error code
BX = next queue entry index
----------215FB3-----------------------------
INT 21 - LANtastic v3+ - TRANSLATE PATH
AX = 5FB3h
DS:SI -> 128-byte buffer for ASCIZ result
ES:DI -> full ASCIZ path, including server name
DX = types of translation to be performed
bit 0: expand last component as indirect file
1: return actual path relative to server's physical disk
Return: CF clear if successful
CF set on error
AX = error code
Note: always expands any indirect files along the path
SeeALso: AX=5FB4h
----------215FB4-----------------------------
INT 21 - LANtastic v3+ - CREATE INDIRECT FILE
AX = 5FB4h
DS:SI -> 128-byte buffer containing ASCIZ contents of indirect file
ES:DI -> full ASCIZ path of indirect file to create, incl machine name
Return: CF clear if successful
CF set on error
AX = error code
Note: the contents of the indirect file may be any valid server-relative path
----------215FB5-----------------------------
INT 21 - LANtastic v3+ - GET INDIRECT FILE CONTENTS
AX = 5FB5h
DS:SI -> 128-byte buffer for ASCIZ indirect file contents
ES:DI -> full ASCIZ path of indirect file
Return: CF clear if successful
CF set on error
AX = error code
----------215FB6-----------------------------
INT 21 - LANtastic v4.1+ - SET AUTO-LOGIN DEFAULTS
AX = 5FB6h
ES:DI -> pointer to ASCIZ default user name, immediately followed by
ASCIZ password
BL = adapter number to use for default login attempt
FFh try all valid adapters
00h-05h try adapter 0-5 explicitly
Return: CF clear if successful
CF set on error
AX = error code
Notes: call with ES:DI -> two nulls to disable auto-login
SeeAlso: AX=5FB7h
----------215FB7-----------------------------
INT 21 - LANtastic v4.1+ - GET AUTO-LOGIN DEFAULTS
AX = 5FB7h
ES:DI -> pointer to 16-byte buffer to store ASCIZ auto-login user name
Return: CF clear if successful
DL = adapter number used for default login attempt
FFh all valid adapters will be tried
00h-05h specified adapter will be tried explicitly
CF set on error
AX = error code
SeeAlso: AX=5F81h,AX=5FB6h
----------215FC0-----------------------------
INT 21 - LANtastic - GET TIME FROM SERVER
AX = 5FC0h
DS:SI -> time block (see below)
ES:DI -> ASCIZ server name to get time from
Return: CF clear if successful
CF set on error
AX = error code
Format of time block:
Offset Size Description
00h WORD year
02h BYTE day
03h BYTE month
04h BYTE minutes
05h BYTE hour
06h BYTE hundredths of second
07h BYTE second
----------215FC8-----------------------------
INT 21 - LANtastic v4.0+ - SCHEDULE SERVER SHUTDOWN
AX = 5FC8h
ES:DI -> ASCIZ server name in form "\\machine"
DS:SI -> ASCIZ reason string (80 characters)
CX = number of minutes until shutdown (0 = immediate)
DX = option flags (see below)
bit 0: auto reboot
1: do not notify users
2: halt after shutdown
3: shutdown due to power fail (used by UPS)
bits 4-7: reserved
bits 8-14: user definable
bit 15: reserved
Return: CF clear if successful
CF set on error
AX = error code
SeeAlso: AH=5FC9h
----------215FC9-----------------------------
INT 21 - LANtastic v4.0+ - CANCEL SERVER SHUTDOWN
AX = 5FC9h
ES:DI -> ASCIZ server name in form "\\machine"
Return: CF clear if successful
CF set on error
AX = error code
Note: you must have the "S" privilege to use this call
SeeAlso: AH=5FC8h
----------215FCA-----------------------------
INT 21 - LANtastic v4.0+ - STUFF SERVER KEYBOARD BUFFER
AX = 5FCAh
ES:DI -> ASCIZ server name in form "\\machine"
DS:SI -> ASCIZ string to stuff (128 bytes)
Return: CF clear if successful
CF set on error
AX = error code
Note: you must have the "S" privilege to use this call
maximum number of characters that can be stuffed is determined by the
server's RUN BUFFER SIZE.
----------215FCB-----------------------------
INT 21 - LANtastic v4.1+ - TERMINATE USER
AX = 5FCBh
ES:DI -> ASCIZ server name in form "\\machine"
DS:SI -> blank-padded username. A null char = wildcard.
DS:DX -> blank-padded machine name. A null char = wildcard.
CX = minutes until termination (0 = immediate)
Return: CF clear if successful
CF set on error
AX = error code
Note: you must have the "S" privilege to use this call
you cannot log yourself out using this call
SeeAlso: AX=5F82h
----------215FCC-----------------------------
INT 21 - LANtastic v4.1+ - GET/SET SERVER CONTROL BITS
AX = 5FCCh
ES:DI -> ASCIZ server name in form "\\machine"
CX = bit values (value of bits you want to set) See below.
DX = bit mask (bits you are interested in, 0 = get only) See
below.
Return: CF clear if successful
CX = control bits after call
bit 0: disable logins
CF set on error
AX = error code
Note: you must have the "S" privilege to SET, anyone can GET.
----------215FCD-----------------------------
INT 21 - LANtastic v4.1+ - FLUSH SERVER CACHES
AX = 5FCDh
ES:DI -> ASCIZ server name in form "\\machine"
Return: CF clear if successful
CF set on error
AX = error code
Note: you must have the "S" privilege to use this call.
----------215FD0-----------------------------
INT 21 - LANtastic - GET REDIRECTED PRINTER TIMEOUT
AX = 5FD0h
Return: CF clear if successful
CX = redirected printer timeout in clock ticks of 55ms
0000h if timeout disabled
CF set on error
AX = error code
SeeAlso: AX=5FD1h
----------215FD1-----------------------------
INT 21 - LANtastic - SET REDIRECTED PRINTER TIMEOUT
AX = 5FD1h
CX = printer timeout in clock ticks of 55ms, 0000h to disable timeouts
Return: CF clear if successful
CF set on error
AX = error code
SeeAlso: AX=5FD0h
----------215FE0-----------------------------
INT 21 C - LANtastic - GET DOS SERVICE VECTOR
AX = 5FE0h
Return: CF clear if successful
ES:BX -> current FAR service routine
CF set on error
AX = error code
Note: the service routine is called by the LANtastic redirector whenever DOS
may safely be called, permitting external TSRs and drivers to hook
into LANtastic's DOS busy flag checking
SeeAlso: AX=5FE1h,INT 28,INT 2A/AH=84h
----------215FE1-----------------------------
INT 21 - LANtastic - SET DOS SERVICE VECTOR
AX = 5FE1h
ES:BX -> FAR routine to call when DOS services are available
Return: CF clear if successful
CF set on error
AX = error code
Note: new handler must chain to previous handler as its first action
SeeAlso: AX=5FE0h
----------215FE2-----------------------------
INT 21 - LANtastic - GET MESSAGE SERVICE VECTOR
AX = 5FE2h
Return: CF clear if successful
ES:BX -> current FAR message service routine
CF set on error
AX = error code
SeeAlso: AX=5FE3h
----------215FE3-----------------------------
INT 21 - LANtastic - SET MESSAGE SERVICE VECTOR
AX = 5FE3h
ES:BX -> FAR routine for processing network messages
Return: CF clear if successful
CF set on error
AX = error code
Notes: handler must chain to previous handler as its first action
on invocation, ES:BX -> just-received message
SeeAlso: AX=5FE2h
----------2160-------------------------------
INT 21 - DOS 3.0+ - CANONICALIZE FILENAME OR PATH
AH = 60h
DS:SI -> ASCIZ filename or path
ES:DI -> 128-byte buffer for canonicalized name
Return: CF set on error
AX = error code
02h invalid component in directory path or drive letter only
03h malformed path or invalid drive letter
ES:DI buffer unchanged
CF clear if successful
AH = 00h
AL = destroyed (00h or 5Ch or last char of current dir on drive)
buffer filled with qualified name of form D:\PATH\FILE.EXT or
\\MACHINE\PATH\FILE.EXT
Notes: the input path need not actually exist
letters are uppercased, forward slashes converted to backslashes,
asterisks converted to appropriate number of question marks, and
file and directory names are truncated to 8.3 if necessary.
'.' and '..' in the path are resolved
filespecs on local drives always start with "d:", those on network
drives always start with "\\"
if path string is on a JOINed drive, the returned name is the one that
would be needed if the drive were not JOINed; similarly for a
SUBSTed, ASSIGNed, or network drive letter. Because of this, it is
possible to get a qualified name that is not legal under the current
combination of SUBSTs, ASSIGNs, JOINs, and network redirections
under DOS 3.3 through 5.00, a device name is translated differently if
the device name does not have an explicit directory or the directory
is \DEV (relative directory DEV from the root directory works
correctly). In these cases, the returned string consists of the
unchanged device name and extension appended to the string X:/
(forward slash instead of backward slash as in all other cases) where
X is the default or explicit drive letter.
functions which take pathnames require canonical paths if invoked via
INT 21/AX=5D00h
supported by OS/2 v1.1 compatibility box
NetWare 2.1x does not support characters with the high bit set; early
versions of NetWare 386 support such characters except in this call.
In addition, NetWare returns error code 3 for the path "X:\"; one
should use "X:\." instead.
for DOS 3.3-5.0, the input and output buffers may be the same, as the
canonicalized name is built in an internal buffer and copied to the
specified output buffer as the very last step
for DR DOS 6.0, this function is not automatically called when on a
network. Device drivers reportedly cannot make this call from their
INIT function. Using the same pointer for both input and output
buffers is not supported in the April 1992 and earlier versions of
DR DOS
SeeAlso: INT 2F/AX=1123h,INT 2F/AX=1221h
----------2161-------------------------------
INT 21 - DOS 3+ - UNUSED
AH = 61h
Return: AL = 00h
Note: this function does nothing and returns immediately
----------2162-------------------------------
INT 21 - DOS 3+ - GET CURRENT PSP ADDRESS
AH = 62h
Return: BX = segment of PSP for current process
Notes: under DOS 3+, this function does not use any of the DOS-internal stacks
and may thus be called at any time, even during another INT 21h call
the current PSP is not necessarily the caller's PSP
identical to the undocumented AH=51h
SeeAlso: AH=50h,AH=51h
----------216300-----------------------------
INT 21 - DOS 2.25 only - GET LEAD BYTE TABLE ADDRESS
AX = 6300h
Return: CF clear if successful
DS:SI -> lead byte table (see below)
CF set on error
AX = error code (01h) (see AH=59h)
Notes: does not preserve any registers other than SS:SP
the US version of MSDOS 3.30 treats this as an unused function,
setting AL=00h and returning immediately
SeeAlso: AX=6301h,AH=07h,AH=08h,AH=0Bh
Format of lead byte table entry:
Offset Size Description
00h 2 BYTEs low/high ends of a range of leading byte of double-byte chars
02h 2 BYTEs low/high ends of a range of leading byte of double-byte chars
...
N 2 BYTEs 00h,00h end flag
----------216300-----------------------------
INT 21 - Far East DOS 3.2+ - GET DOUBLE BYTE CHARACTER SET LEAD TABLE
AX = 6300h
Return: AL = error code
00h successful
DS:SI -> DBCS table (see below)
all other registers except CS:IP and SS:SP destroyed
FFh not supported
Notes: probably identical to AH=63h/AL=00h for DOS 2.25
the US version of MSDOS 3.30 treats this as an unused function,
setting AL=00h and returning immediately
the US version of DOS 4.0+ accepts this function, but returns an empty
list
SeeAlso: AX=6300h"DOS 2.25"
Format of DBCS table:
Offset Size Description
00h 2 BYTEs low/high ends of a range of leading byte of double-byte chars
02h 2 BYTEs low/high ends of a range of leading byte of double-byte chars
...
N 2 BYTEs 00h,00h end flag
----------216301-----------------------------
INT 21 - DOS 2.25, Far East DOS 3.2+ - SET KOREAN (HANGUL) INPUT MODE
AX = 6301h
DL = new mode
00h return only full characters on DOS keyboard input functions
01h return partially-formed characters also
Return: AL = status
00h successful
FFh invalid mode
SeeAlso: AH=07h,AH=08h,AH=0Bh,AH=63h,AX=6302h
----------216302-----------------------------
INT 21 - DOS 2.25, Far East DOS 3.2+ - GET KOREAN (HANGUL) INPUT MODE
AX = 6302h
Return: AL = status
00h successful
DL = current input mode
00h return only full characters
01h return partial characters
FFh not supported
SeeAlso: AH=07h,AH=08h,AH=0Bh,AH=63h,AX=6301h
----------2164-------------------------------
INT 21 - DOS 3.2+ internal - SET DEVICE DRIVER LOOKAHEAD FLAG
AH = 64h
AL = flag
00h (default) call device driver function 5 (non-dest read)
before INT 21/AH=01h,08h,0Ah
nonzero don't call driver function 5
Return: nothing
Notes: called by DOS 3.3+ PRINT.COM
does not use any of the DOS-internal stacks and is thus fully
reentrant
SeeAlso: AH=01h,AH=08h,AH=0Ah,AX=5D06h
----------2164--BX0000-----------------------
INT 21 - OS/2 v2.0 Virtual DOS Machine - GET/SET TASK TITLE
AH = 64h
BX = 0000h
CX = 636Ch
DX = function
0000h enable automatic title switch on INT 21/AH=4Bh
0001h set session title
ES:DI -> new ASCIZ title or "" to restore original title
0002h get session title
ES:DI -> buffer for current title
Return: buffer filled (single 00h if title never changed)
SeeAlso: INT 15/AH=12h/BH=05h,INT 21/AH=4Bh
----------2165-------------------------------
INT 21 - DOS 3.3+ - GET EXTENDED COUNTRY INFORMATION
AH = 65h
AL = info ID
01h get general internationalization info
02h get pointer to uppercase table
04h get pointer to filename uppercase table
05h get pointer to filename terminator table
06h get pointer to collating sequence table
07h (DOS 4+) get pointer to Double-Byte Character Set table
BX = code page (-1=global code page)
DX = country ID (-1=current country)
ES:DI -> country information buffer (see below)
CX = size of buffer (>= 5)
Return: CF set on error
AX = error code (see AH=59h)
CF clear if succesful
CX = size of country information returned
ES:DI -> country information
Notes: AL=05h appears to return same info for all countries and codepages; it
has been documented for DOS 5.0, but was undocumented in ealier
versions
NLSFUNC must be installed to get info for countries other than the
default
subfunctions 02h and 04h are identical under OS/2
SeeAlso: AH=38h,INT 2F/AX=1401h,INT 2F/AX=1402h
Format of country information:
Offset Size Description
00h BYTE info ID
---if info ID = 01h---
01h WORD size
03h WORD country ID
05h WORD code page
07h 34 BYTEs country-dependent info (see AH=38h)
---if info ID = 02h---
01h DWORD pointer to uppercase table (see below)
---if info ID = 04h---
01h DWORD pointer to filename uppercase table (see below)
---if info ID = 05h---
01h DWORD pointer to filename character table (see below)
---if info ID = 06h---
01h DWORD pointer to collating table (see below)
---if info ID = 07h (DOS 4+)---
01h DWORD pointer to DBCS lead byte table (see below)
Format of uppercase table:
Offset Size Description
00h WORD table size
02h 128 BYTEs uppercase equivalents (if any) of chars 80h to FFh
Format of collating table:
Offset Size Description
00h WORD table size
02h 256 BYTEs values used to sort characters 00h to FFh
Format of filename terminator table:
Offset Size Description
00h WORD table size (not counting this word)
02h BYTE ??? (01h for MSDOS 3.30-5.00)
03h BYTE lowest permissible character value for filename
04h BYTE highest permissible character value for filename
05h BYTE ??? (00h for MSDOS 3.30-5.00)
06h BYTE first excluded character in range \ all characters in this
07h BYTE last excluded character in range / range are illegal
08h BYTE ??? (02h for MSDOS 3.30-5.00)
09h BYTE number of illegal (terminator) characters
0Ah N BYTES characters which terminate a filename: ."/\[]:|<>+=;,
Note: partially documented for DOS 5.0, but undocumented for earlier versions
Format of filename uppercase table:
Offset Size Description
00h WORD table size
02h 128 BYTEs uppercase equivalents (if any) of chars 80h to FFh
Format of DBCS lead byte table:
Offset Size Description
00h WORD length
02h 2N BYTEs start/end for N lead byte ranges
WORD 0000h (end of table)
----------2165-------------------------------
INT 21 - DOS 4+ - COUNTRY-DEPENDENT CHARACTER CAPITALIZATION
AH = 65h
AL = function
20h capitalize character
DL = character to capitalize
Return: DL = capitalized character
21h capitalize string
DS:DX -> string to capitalize
CX = length of string
22h capitalize ASCIZ string
DS:DX -> ASCIZ string to capitalize
Return: CF set on error
AX = error code (see AH=59h)
CF clear if successful
Note: these calls have been documented for DOS 5+, but were undocumented in
DOS 4.x.
----------216523-----------------------------
INT 21 U - DOS 4+ internal - DETERMINE IF CHARACTER REPRESENTS YES/NO RESPONSE
AX = 6523h
DL = character
DH = second character of double-byte character (if applicable)
Return: CF set on error
CF clear if successful
AX = type
00h no
01h yes
02h neither yes nor no
----------2165-------------------------------
INT 21 U - DOS 4+ internal - COUNTRY-DEPENDENT FILENAME CAPITALIZATION
AH = 65h
AL = function
A0h capitalize filename character
DL = character to capitalize
Return: DL = capitalized character
A1h capitalize counted filename string
DS:DX -> filename string to capitalize
CX = length of string
A2h capitalize ASCIZ filename
DS:DX -> ASCIZ filename to capitalize
Return: CF set on error
AX = error code (see AH=59h)
CF clear if successful
Note: nonfunctional in DOS 4.00 through 5.00 due to a bug (the code sets a
pointer depending on the high bit of AL, but doesn't clear the
bit before branching by function number).
----------216601-----------------------------
INT 21 - DOS 3.3+ - GET GLOBAL CODE PAGE TABLE
AX = 6601h
Return: CF set on error
AX = error code (see AH=59h)
CF clear if successful
BX = active code page (see AX=6602h)
DX = system code page
SeeAlso: AX=6602h
----------216602-----------------------------
INT 21 - DOS 3.3+ - SET GLOBAL CODE PAGE TABLE
AX = 6602h
BX = active code page
437 US
850 Multilingual
852 Slavic/Latin II (DOS 5+)
857 Turkish
860 Portugal
861 Iceland
863 Canada (French)
865 Norway/Denmark
DX = system code page (active page at boot time)
Return: CF set on error
AX = error code (see AH=59h)
CF clear if successful
SeeAlso: AX=6601h
----------2167-------------------------------
INT 21 - DOS 3.3+ - SET HANDLE COUNT
AH = 67h
BX = size of new file handle table for process
Return: CF clear if successful
CF set on error
AX = error code (see AH=59h)
Desc: adjust the size of the per-process open file table, thus raising or
lowering the limit on the number of files the caller can open
simultaneously
Notes: if BX <= 20, no action is taken if the handle limit has not yet been
increased, and the table is copied back into the PSP if the limit
is currently > 20 handles
for file handle tables of > 20 handles, DOS 3.30 never reuses the
same memory block, even if the limit is being reduced; this can lead
to memory fragmentation as a new block is allocated and the existing
one freed
only the first 20 handles are copied to child processes in DOS 3.3
BUG: the original release of DOS 3.30 allocates a full 64K for the handle
table on requests for an even number of handles
SeeAlso: AH=26h,AH=86h
----------2168-------------------------------
INT 21 - DOS 3.3+ - "FFLUSH" - COMMIT FILE
AH = 68h
BX = file handle
Return: CF clear if successful
all data still in DOS disk buffers is written to disk immediately,
and the file's directory entry is updated
CF set on error
AX = error code (see AH=59h)
SeeAlso: AX=5D01h,AH=6Ah,INT 2F/AX=1107h
----------2169-------------------------------
INT 21 U - DOS 4+ internal - GET/SET DISK SERIAL NUMBER
AH = 69h
AL = subfunction
00h get serial number
01h set serial number
BL = drive (0=default, 1=A, 2=B, etc)
DS:DX -> disk info (see below)
Return: CF set on error
AX = error code (see AH=59h)
CF clear if successful
AX destroyed
(AL = 00h) buffer filled with appropriate values from extended BPB
(AL = 01h) extended BPB on disk set to values from buffer
Notes: does not generate a critical error; all errors are returned in AX
error 0005h given if no extended BPB on disk
does not work on network drives (error 0001h)
buffer after first two bytes is exact copy of bytes 27h thru 3Dh of
extended BPB on disk
this function is supported under Novell NetWare versions 2.0A through
3.11; the returned serial number is the one a DIR would display,
the volume label is the NetWare volume label, and the file system
is set to "FAT16".
the serial number is computed from the current date and time when the
disk is created; the first part is the sum of the seconds/hundredths
and month/day, the second part is the sum of the hours/minutes and
year
the volume label which is read or set is the one stored in the extended
BPB on disks formatted with DOS 4.0+, rather than the special root
directory entry used by the DIR command in COMMAND.COM (use AH=11h
to find that volume label)
SeeAlso: AX=440Dh
Format of disk info:
Offset Size Description
00h WORD info level (zero)
02h DWORD disk serial number (binary)
06h 11 BYTEs volume label or "NO NAME " if none present
11h 8 BYTEs (AL=00h only) filesystem type--string "FAT12 " or "FAT16 "
----------2169-------------------------------
INT 21 - DR-DOS 5.0 - NULL FUNCTION
AH = 69h
Return: AL = 00h
SeeAlso: AH=18h
----------216969-----------------------------
INT 21 - VIRUS - "Rape-747" - INSTALLATION CHECK
AX = 6969h
Return: AX = 0666h if resident
SeeAlso: AX=58CCh,AH=76h"VIRUS"
----------216A-------------------------------
INT 21 U - DOS 4+ - COMMIT FILE
AH = 6Ah
BX = file handle
Return: CF clear if successful
AH = 68h
CF set on error
AX = error code (06h) (see AH=59h)
Note: identical to AH=68h in DOS 5.0; not known whether this is the case in
DOS 4.x
SeeAlso: AH=68h
----------216B-------------------------------
INT 21 U - DOS 4.0 internal - ???
AH = 6Bh
AL = subfunction
00h ???
DS:SI -> Current Directory Structure???
CL = drive (1=A:)
01h ???
DS:SI -> ???
CL = file handle???
02h ???
DS:SI -> Current Directory Structure???
DI = ???
CX = drive (1=A:)
Return: CF set on error
AX = error code (see INT 21/AH=59h)
CF clear if successful
Note: passed through to INT 2F/AX=112Fh with AX on top of stack
SeeAlso: AH=6Bh"DOS 5",INT 2F/AX=112Fh
----------216B-------------------------------
INT 21 U - DOS 5.0 - NULL FUNCTION
AH = 6Bh
Return: AL = 00h
Note: this function does nothing and returns immediately
SeeAlso: AH=6Bh"DOS 4"
----------216C00-----------------------------
INT 21 - DOS 4+ - EXTENDED OPEN/CREATE
AX = 6C00h
BL = open mode as in AL for normal open (INT 21/AH=3Dh)
bit 7: inheritance
bits 4-6: sharing mode
bit 3 reserved
bits 0-2: access mode
BH = flags
bit 6 = auto commit on every write
bit 5 = return error rather than doing INT 24h
CX = create attribute
bits 6-15 reserved
bit 5: archive
bit 4: reserved
bit 3: volume label
bit 2: system
bit 1: hidden
bit 0: readonly
DL = action if file exists/does not exists
bits 7-4 action if file does not exist
0000 fail
0001 create
bits 3-0 action if file exists
0000 fail
0001 open
0010 replace/open
DH = 00h (reserved)
DS:SI -> ASCIZ file name
Return: CF set on error
AX = error code (see AH=59h)
CF clear if successful
AX = file handle
CX = 1 file opened
2 file created
3 file replaced
Note: the PC LAN Program only supports DL=01h, DL=10h/sharing=compatibility,
and DL=12h
SeeAlso: AH=3Ch,AH=3Dh
----------217070BX6060-----------------------
INT 21 - PCW Weather Card interface - GET DATA SEGMENT
AX = 7070h
BX = 6060h
CX = 7070h
DX = 7070h
SX = 7070h
DX = 7070h
Return: AX = segment of data structure
Notes: the data structure is at offset 516 from this segment.
the update byte is at offset 514 from this segment. Updates are
once per second while this byte is nonzero and it is decremented
once per second. While this byte is 0 updates are once per minute.
SeeAlso: AX=7070h/BX=7070h
Format of data structure:
Offset Type Description
00h WORD hour
02h WORD minute
04h WORD second
06h WORD day
08h WORD month
0Ah WORD year
0Ch WORD ???
0Eh WORD relative barometric pressure (in 1/100 inches)
10h WORD ???
12h WORD ???
14h WORD temperature 1 (in 1/10 degrees F)
16h WORD temperature 1 lowest (in 1/10 degrees F)
18h WORD temperature 1 highest (in 1/10 degrees F)
1Ah WORD temperature 2 (in 1/10 degrees F)
1Ch WORD temperature 2 lowest (in 1/10 degrees F)
1Eh WORD temperature 2 highest (in 1/10 degrees F)
20h WORD wind speed (in MPH)
22h WORD average of 60 wind speed samples (in MPH)
24h WORD highest wind speed (in MPH)
26h WORD wind chill factor (in 1/10 degrees F)
28h WORD lowest wind chill factor (in 1/10 degrees F)
2Ah WORD ???
2Ch WORD wind direction (in degrees)
2Eh WORD accumulated daily rainfall (in 1/10 inches)
30h WORD accumulated annual rainfall (in 1/10 inches)
----------217070BX7070-----------------------
INT 21 - PCW Weather Card interface - INSTALLATION CHECK
AX = 7070h
BX = 7070h
CX = 7070h
DX = 7070h
SX = 7070h
DX = 7070h
Return: AX = 0070h
BX = 0070h
CX = 0070h
DX = 0070h
SX = 0070h
DX = 0070h
SeeAlso: AX=7070h/BX=6060h,AX=8080h
----------2176-------------------------------
INT 21 - VIRUS - "Klaeren"/"Hate" - INSTALLATION CHECK
AH = 76h
Return: AL = 48h if resident
SeeAlso: AX=6969h,AX=7700h"VIRUS"
----------217761-----------------------------
INT 21 - WATCH.COM v3.2+ - INSTALLATION CHECK
AX = 7761h ('wa')
Return: AX = 6177h
Note: WATCH.COM is part of the "TSR" package by TurboPower Software
SeeAlso: INT 16/AX=7761h
----------217700-----------------------------
INT 21 - VIRUS - "Growing Block" - INSTALLATION CHECK
AX = 7700h
Return: AX = 0920h if resident
SeeAlso: AH=76h,AH=7Fh
----------217F-------------------------------
INT 21 - VIRUS - "Squeaker" - INSTALLATION CHECK
AH = 7Fh
Return: AH = 80h if resident
SeeAlso: AX=7700h,AH=83h"VIRUS"
---------------------------------------------
Interrupt List, part 4 of 8
This compilation is Copyright (c) 1989,1990,1991,1992,1993 Ralf Brown
----------2180-------------------------------
INT 21 - European MSDOS 4.0 - "AEXEC" - EXECUTE PROGRAM IN BACKGROUND
AH = 80h
CX = mode
0000h place child in zombie mode on exit to preserve exit code
0001h discard child process and exit code on termination
DS:DX -> ASCIZ full program name
ES:BX -> parameter block (as for AX=4B00h)
Return: CF clear if successful
AX = Command Subgroup ID (CSID)
CF set on error
AX = error code (see AH=59h)
Desc: asynchronously execute a program, creating a new process for it
Notes: this function is called by the DETACH command
there is a system-wide limit of 32 processes
the CSID is used to identify all processes that have been spawned by
a given process, whether directly or indirectly
programs to be run in the background must use the new executable format
(see AH=4Bh)
background processes may only perform asynchronous (background) EXECs,
either this function or AX=4B04h
background processes may execute INT 11, INT 12, INT 21, INT 2A, and
INT 2F at any time; they may execute INT 10 and INT 16 only while
they have opened a popup screen via INT 2F/AX=1401h; no other
interrupts may be executed from the background
background processes may not use drive B: or overlay their code
segments
SeeAlso: AH=4Bh,AX=8700h,INT 2F/AX=1400h"POPUP"
----------218080-----------------------------
INT 21 - PCW Weather Card interface - UNINSTALL PCW.COM AND FREE MEMORY
AX = 8080h
Return: ???
SeeAlso: AX=7070h/BX=7070h
----------2181-------------------------------
INT 21 - European MSDOS 4.0 - "FREEZE" - STOP A PROCESS
AH = 81h
BX = flag (00h freeze command subtree, 01h only specified process)
CX = Process ID of head of command subtree
Return: CF clear if successful
CF set on error
AX = error code (no such process)
Desc: temporarily suspend a process or a process and all of its children
Note: if BX=0001h, this call will not return until the process is actually
frozen, which may not be until after it unblocks from an I/O
operation
SeeAlso: AH=82h,AH=89h,AX=8E00h,INT 15/AX=101Dh
----------2182-------------------------------
INT 21 - European MSDOS 4.0 - "RESUME" - RESTART A PROCESS
AH = 82h
BX = flag (00h resume command subtree, 01h only specified process)
CX = Process ID of head of command subtree
Return: CF clear if successful
CF set on error
AX = error code (no such process)
Desc: restart a previously-suspended process or a process and all of its
children
SeeAlso: AX=81h,INT 15/AX=101Eh
----------2183-------------------------------
INT 21 - European MSDOS 4.0 - "PARTITION" - GET/SET FOREGROUND PARTITION SIZE
AH = 83h
AL = function
00h get size
01h set new size
BX = new size in paragraphs
Return: CF clear if successful
BX = current size (function 00h) or old size (function 01h)
CF set on error
AX = error code (01h,07h,0Dh)(see AH=59h)
Desc: specify or determine how much memory may be allocated by the foreground
process
Note: if the partition size is set to 0000h, no partition management is done
and all memory allocation is compatible with DOS 3.2.
the partition size can be changed regardless of what use is being made
of the changed memory; subsequent allocations will follow the
partition rules (foreground processes may allocate only foreground
memory; background processes allocate background memory first, then
foreground memory)
SeeAlso: AH=48h,AH=4Ah
----------2183-------------------------------
INT 21 - VIRUS - "SVC" - INSTALLATION CHECK
AH = 83h
Return: DX = 1990h if resident
SeeAlso: AH=76h,AH=84h"VIRUS"
----------2184-------------------------------
INT 21 - VIRUS - "SVC 5.0" or "SVC 6.0" - INSTALLATION CHECK
AH = 84h
Return: DX = 1990h if resident
BH = version number (major in high nybble, minor in low)
SeeAlso: AH=83h"VIRUS",AH=89h"VIRUS"
----------218400-----------------------------
INT 21 - European MSDOS 4.0 - "CREATMEM" - CREATE A SHARED MEMORY AREA
AX = 8400h
BX = size in bytes (0000h = 65536)
CX = flags
bit 6: zero-initialize segment
DS:DX -> ASCIZ name (must begin with "\SHAREMEM\")
Return: CF clear if successful
AX = segment address of shared memory global object
CF set on error
AX = error code (06h,08h) (see AH=59h)
Desc: create an area of memory which may be accessed by multiple processes
Notes: shared memory objects are created as special files (thus the
restriction on the name)
on successful creation, the reference count is set to 1
SeeAlso: AX=8401h,AX=8402h,INT 15/AX=DE19h
----------218401-----------------------------
INT 21 - European MSDOS 4.0 - "GETMEM" - OBTAIN ACCESS TO SHARED MEMORY AREA
AX = 8401h
CX = flags
bit 7: writable segment (ignored by MSDOS 4.0)
DS:DX -> ASCIZ name (must begin with "\SHAREMEM\")
Return: CF clear if successful
AX = segment address of shared memory global object
CX = size in bytes
CF set on error
AX = error code (invalid name)
Desc: get address of a previously-created area of memory which may be
accessed by multiple processes
Note: this call increments the reference count for the shared memory area
SeeAlso: AX=8400h,AX=8402h
----------218402-----------------------------
INT 21 - European MSDOS 4.0 - "RELEASEMEM" - FREE SHARED MEMORY AREA
AX = 8402h
BX = handle (segment address of shared memory object)
Return: CF clear if successful
CF set on error
AX = error code (no such name)
Desc: indicate that the specified area of shared memory will no longer be
used by the caller
Note: the reference count is decremented and the shared memory area is
deallocated if the new reference count is zero
SeeAlso: AX=8400h,AX=8401h,INT 15/AX=DE19h
----------2185-------------------------------
INT 21 U - European MSDOS 4.0 - ???
AH = 85h
???
Return: ???
----------2186-------------------------------
INT 21 - European MSDOS 4.0 - "SETFILETABLE" - INSTALL NEW FILE HANDLE TABLE
AH = 86h
BX = total number of file handles in new table
Return: CF clear if successful
CF set on error
AX = error code (06h,08h) (see AH=59h)
Desc: adjust the size of the per-process open file table, thus raising or
lowering the limit on the number of files the caller can open
simultaneously
Notes: any currently-open files are copied to the new table
if the table is increased beyond the default 20 handles, only the
first 20 will be inherited by child processes
error 06h is returned if the requested number of handles exceeds
system limits or would require closing currently-open files
SeeAlso: AH=26h,AH=67h
----------2187-------------------------------
INT 21 - European MSDOS 4.0 - "GETPID" - GET PROCESS IDENTIFIER
AH = 87h
Return: AX = PID
BX = parent process's PID
CX = Command Subgroup ID (CSID)
Desc: determine an identifier by which to access the calling process
Notes: called by MS C v5.1 getpid() function
this function apparently must return AX=0001h for INT 21/AH=80h to
succeed
one possible check for European MSDOS 4.0 is to issue this call with
AL=00h and check whether AL is nonzero on return
SeeAlso: AH=30h,AH=62h,AH=80h
----------2188-------------------------------
INT 21 U - European MSDOS 4.0 - ???
AH = 88h
???
Return: ???
----------2189-------------------------------
INT 21 - European MSDOS 4.0 - SLEEP
AH = 89h
CX = time in milliseconds or 0000h to give up time slice
Return: CF clear if successful
CX = 0000h
CF set on error
AX = error code (interrupted system call)
CX = sleep time remaining
Desc: suspend the calling process for the specified duration
Notes: the sleep interval is rounded up to the next higher increment of the
scheduler clock, and may be extended further if other processes are
running
this call may be interrupted by signals (see AH=8Dh)
reportedly called by Microsoft C 4.0 startup code
background processes have higher priority than the foreground process,
and should thus periodically yield the CPU
SeeAlso: AH=81h,INT 15/AX=1000h,INT 2F/AX=1680h,INT 7A/BX=000Ah
----------2189-------------------------------
INT 21 - VIRUS - "Vriest" - INSTALLATION CHECK
AH = 89h
Return: AX = 0123h if resident
SeeAlso: AH=84h"VIRUS",AH=90h"VIRUS"
----------218A-------------------------------
INT 21 - European MSDOS 4.0 - "CWAIT" - WAIT FOR CHILD TO TERMINATE
AH = 8Ah
BL = range (00h command subtree, 01h any child)
BH = suspend flag
00h suspend if children exist but none are dead
01h return if no dead children
CX = Process ID of head of command subtree
Return: CF clear if successful
AH = termination type
00h normal termination
01h aborted by Control-C
02h aborted by I/O error
03h terminate and stay resident
04h aborted by signal
05h aborted by program error
AL = return code from child or aborting signal
BX = PID of child (0000h if no dead children)
CF set on error
AX = error code (no child,interrupted system call)
Desc: get return code from an asynchronously-executed child program,
optionally waiting if no return code is available
SeeAlso: AH=4Bh,AH=4Dh,AH=80h,AH=8Dh
----------218B-------------------------------
INT 21 U - European MSDOS 4.0 - ???
AH = 8Bh
???
Return: ???
----------218C-------------------------------
INT 21 - European MSDOS 4.0 - SET SIGNAL HANDLER
AH = 8Ch
AL = signal number (see below)
BL = action (see below)
DS:DX -> signal handler
Return: CF clear if successful
AL = previous action
ES:BX -> previous signal handler
CF set on error
AX = error code (01h,invalid SigNumber or Action) (see AH=59h)
Desc: set the routine which will be invoked on a number of exceptional
conditions
Note: all signals will be sent to the most recently installed handler
SeeAlso: AH=8Dh
Values for signal number:
01h SIGINTR Control-C or user defined interrupt key
08h SIGTERM program termination
09h SIGPIPE broken pipe
0Dh SIGUSER1 reserved for user definition
0Eh SIGUSER2 reserved for user definition
Values for signal action:
00h SIG_DFL terminate process on receipt
01h SIG_IGN ignore signal
02h SIG_GET signal is accepted
03h SIG_ERR sender gets error
04h SIG_ACK acknowledge received signal and clear it, but don't
change current setting
Signal handler is called with:
AL = signal number
AH = signal argument
Return: RETF, CF set: terminate process
RETF, CF clear, ZF set: abort any interrupted system call with an error
RETF, CF clear, ZF clear: restart any interrupted system call
IRET: restart any interrupted system call
Note: the signal handler may also perform a nonlocal GOTO by resetting the
stack pointer and jumping; before doing so, it should dismiss the
signal by calling this function with BL=04h
----------218D-------------------------------
INT 21 - European MSDOS 4.0 - SEND SIGNAL
AH = 8Dh
AL = signal number (see AH=8Ch)
BH = signal argument
BL = action
00h send to entire command subtree
01h send only to specified process
DX = Process ID
Return: CF clear if successful
CF set on error
AX = error code (01h,06h)(see AH=59h)
Desc: invoke the exceptional-condition handler for the specified process
Note: error 06h may be returned if one or more of the affected processes
have an error handler for the signal
SeeAlso: AH=8Ch
----------218E00-----------------------------
INT 21 - European MSDOS 4.0 - "SETPRI" - GET/SET PROCESS PRIORITY
AX = 8E00h
BH = 00h
BL = action
00h set priority for command subtree
01h set priority for specified process only
CX = Process ID
DH = 00h
DL = change in priority (00h to get priority)
Return: CF clear if successful
DL = process priority
DH destroyed
CF set on error
AX = error code (01h,no such process)(see AH=59h)
Desc: specify or determine the execution priority of the specified process
or the process and all of its children
SeeAlso: AH=81h
----------218F-------------------------------
INT 21 U - European MSDOS 4.0 - ???
AH = 8Fh
???
Return: ???
----------2190-------------------------------
INT 21 U - European MSDOS 4.0 - ???
AH = 90h
???
Return: ???
----------2190-------------------------------
INT 21 - VIRUS - "Carioca" - INSTALLATION CHECK
AH = 90h
Return: AH = 01h if resident
SeeAlso: AH=89h"VIRUS",AX=9753h"VIRUS"
----------2191-------------------------------
INT 21 U - European MSDOS 4.0 - ???
AH = 91h
???
Return: ???
----------2192-------------------------------
INT 21 U - European MSDOS 4.0 - ???
AH = 92h
???
Return: ???
----------2193-------------------------------
INT 21 - European MSDOS 4.0 - "PIPE" - CREATE A NEW PIPE
AH = 93h
CX = size in bytes
Return: CF clear if successful
AX = read handle
BX = write handle
CF set on error
AX = error code (08h) (see AH=59h)
Desc: create a communications channel which may be used for interprocess
data and command exchanges
SeeAlso: AH=3Ch,AH=3Fh,AH=40h,AH=84h
----------2194-------------------------------
INT 21 U - European MSDOS 4.0 - ???
AH = 94h
???
Return: ???
----------2195-------------------------------
INT 21 - European MSDOS 4.0 - HARD ERROR PROCESSING
AH = 95h
AL = new state
00h enabled
01h disabled, automatically fail hard errors
Return: AX = previous setting
Desc: specify whether hard (critical) errors should automatically fail the
system call or invoke an INT 24
SeeAlso: INT 24
----------2196-------------------------------
INT 21 U - European MSDOS 4.0 - ???
AH = 96h
???
Return: ???
----------2197-------------------------------
INT 21 U - European MSDOS 4.0 - ???
AH = 97h
???
Return: ???
----------219753-----------------------------
INT 21 - VIRUS - "Nina" - INSTALLATION CHECK
AX = 9753h
Return: never (executes original program) if virus resident
SeeAlso: AH=90h"VIRUS",AX=A1D5h"VIRUS"
----------2198-------------------------------
INT 21 U - European MSDOS 4.0 - ???
AH = 98h
???
Return: ???
----------2199-------------------------------
INT 21 u - European MSDOS 4.0 - "PBLOCK" - BLOCK A PROCESS
AH = 99h
DS:BX -> memory location to block on
CX = timeout in milliseconds
DH = nonzero if interruptible
Return: CF clear if awakened by event
AX = 0000h
CF set if unusual wakeup
ZF set if timeout, clear if interrupted by signal
AX = nonzero
Desc: suspend calling process until another process sends a "restart" signal
or a timeout occurs
SeeAlso: AH=9Ah,INT 2F/AX=0802h
----------219A-------------------------------
INT 21 u - European MSDOS 4.0 - "PRUN" - UNBLOCK A PROCESS
AH = 9Ah
DS:BX -> memory location processes may have blocked on
Return: AX = number of processes awakened
ZF set if no processes awakened
Desc: restart all processes waiting for the specified "restart" signal
SeeAlso: AH=99h,INT 2F/AX=0802h
----------21A0-------------------------------
INT 21 - Attachmate Extra - GET 3270 DISPLAY STATE
AH = A0h
Return: AL = display status
bit 7 : 0=windowed, 1=enlarged
bits 6-3: current screen profile number 0-9
bits 2-0: active window number
0=PC, 1-4=host B-E, 5-6=notepad F-G
BX = host window status
bit 15: reserved
bit 14: 0=host E window installed, 1=not
bit 13: 0=host E terminal on, 1=off
bit 12: 0=host E window displayed, 1=not
bit 11: reserved
bit 10: 0=host D window installed, 1=not
bit 9: 0=host D terminal on, 1=off
bit 8: 0=host D window displayed, 1=not
bit 7: reserved
bit 6: 0=host C window installed, 1=not
bit 5: 0=host C terminal on, 1=off
bit 4: 0=host C window displayed, 1=not
bit 3: reserved
bit 2: 0=host B window installed, 1=not
bit 1: 0=host B terminal on, 1=off
bit 0: 0=host B window displayed, 1=not
Note: Attachmate Extra is a 3270 emulator by Attachmate Corporation
SeeAlso: AH=A1h
----------21A1-------------------------------
INT 21 - Attachmate Extra - SET 3270 DISPLAY STATE
AH = A1h
AL = set status byte
bit 7 : 0=windowed, 1=enlarged
bits 6-3: current screen profile number 0-9
bits 2-0: active window number
0=PC, 1-4=host B-E, 5-6=notepad F-G
SeeAlso: AH=A0h,AH=A2h
----------21A1D5-----------------------------
INT 21 - VIRUS - "789"/"Filehider" - INSTALLATION CHECK
AX = A1D5h
Return: AX = 900Dh if resident
SeeAlso: AX=9753h,AX=A55Ah
----------21A2-------------------------------
INT 21 - Attachmate Extra - SET HOST WINDOW STATE
AH = A2h
AL = set status byte
bit 7 : 0=power off, 1=power on
bit 6 : 0=not installed, 1=installed
bits 5-3: reserved
bits 2-0: window number 1-4=host B-E
SeeAlso: AH=A1h
----------21A3-------------------------------
INT 21 - Attachmate Extra - SEND KEYSTROKES TO HOST WINDOW
AH = A3h
AL = window number (1-4=host B-E)
CX = 0001h
DS:BX -> keystroke buffer
DL = zero if keystroke buffer contains host function code,
non-zero if keystroke buffer contains ASCII character
Return: CX = zero if character sent, non-zero if not
BX incremented if CX=0
Values for host function code:
00h=reserved 10h=PF16 20h=Clear 30h=SysRq
01h=PF1 11h=PF17 21h=Print 31h=ErInp
02h=PF2 12h=PF18 22h=Left 32h=ErEof
03h=PF3 13h=PF19 23h=Right 33h=Ident
04h=PF4 14h=PF20 24h=Up 34h=Test
05h=PF5 15h=PF21 25h=Down 35h=Reset
06h=PF6 16h=PF22 26h=Home 36h=DevCncl
07h=PF7 17h=PF23 27h=Fast Left 37h=Dup
08h=PF8 18h=PF24 28h=Fast Right 38h=FldMark
09h=PF9 19h=Alt on 29h=Bksp 39h=Enter
0Ah=PF10 1Ah=Alt off 2Ah=Insert 3Ah=CrSel
0Bh=PF11 1Bh=Shift on 2Bh=Delete
0Ch=PF12 1Ch=Shift off 2Ch=Backtab
0Dh=PF13 1Dh=PA1 2Dh=Tab
0Eh=PF14 1Eh=PA2 2Eh=Newline
0Fh=PF15 1Fh=PA3 2Fh=Attn
----------21A4-------------------------------
INT 21 - Attachmate Extra - GET HOST WINDOW BUFFER ADDRESS
AH = A4h
AL = window number (1-4=host B-E)
Return: DS:BX -> 3270 display buffer
SeeAlso: AH=A5h,AH=B8h
----------21A5-------------------------------
INT 21 - Attachmate Extra - GET HOST WINDOW CURSOR POSITION
AH = A5h
AL = window number (1-4=host B-E)
Return: BX = cursor position (80 * row + column, where 0:0 is upper left)
Note: if the host window is configured with the Extended Attribute (EAB)
feature, multiply the cursor position by 2 to obtain the byte offset
into the display buffer
SeeAlso: AH=A4h
----------21A55A-----------------------------
INT 21 - VIRUS - "Eddie-2" - INSTALLATION CHECK
AX = A55Ah
Return: AX = 5AA5h if resident
SeeAlso: AX=A1D5h,AX=AA00h
----------21AA00-----------------------------
INT 21 - VIRUS - "Blinker" - INSTALLATION CHECK
AX = AA00h
Return: AX = 00AAh if resident
SeeAlso: AX=A55Ah,AX=AA03h
----------21AA03-----------------------------
INT 21 - VIRUS - "Backtime" - INSTALLATION CHECK
AX = AA03h
Return: AX = 03AAh if resident
SeeAlso: AX=AA00h,AH=ABh
----------21AB-------------------------------
INT 21 - VIRUS - "600" or "Voronezh"-family - INSTALLATION CHECK
AH = ABh
Return: AX = 5555h if resident
SeeAlso: AX=AA03h,AX=BBBBh"VIRUS"
----------21AF-------------------------------
INT 21 - Attachmate Extra - GET TRANSLATE TABLE ADDRESS
AH = AFh
Return: DS:BX -> translate tables (see below)
Format of translate tables:
Offset Size Description
00h 256 BYTEs ASCII to 3270 buffer code translate table
100h 256 BYTEs 3270 buffer code to ASCII translate table
200h 256 BYTEs 3270 buffer code to EBCDIC translate table
300h 256 BYTEs EBCDIC to 3270 buffer code translate table
----------21B5-------------------------------
INT 21 - Novell NetWare shell 3.01 - TASK MODE CONTROL
AH = B5h
AL = subfunction
03h get task mode
Return: AH = 00h
AL = current task mode byte
04h get task mode pointer
Return: ES:BX -> task mode byte
Notes: the task mode byte specifies how task cleanup should be performed, but
is declared to be version-dependent
allows a program to disable the automatic cleanup for programs managing
task swapping, etc.
Values for task mode byte in version 3.01:
00h-03h reserved
04h no task cleanup
----------21B6-------------------------------
INT 21 - Novell NetWare - FILE SERVICES - EXTENDED FILE ATTRIBUTES
AH = B6h
AL = subfunction
00h get extended file attributes
01h set extended file attributes
CL = extended file attributes (see below)
DS:DX -> ASCIZ pathname (max 255 bytes)
Return: CF set on error
AL = error code
8Ch caller lacks privileges
FEh not permitted to search directory
FFh file not found
CF clear if successful
AL = 00h (success)
CL = current extended file attributes (see below)
Note: this function is supported by Advanced NetWare 2.1+
SeeAlso: AX=4300h,AH=E3h/SF=0Fh
Bitmask of extended file attributes:
bits 2-0: search mode (executables only)
000 none (use shell's default search)
001 search on all opens without path
010 do not search
011 search on read-only opens without path
100 reserved
101 search on all opens
110 reserved
111 search on all read-only opens
bit 3: reserved
bit 4: transactions on file tracked
bit 5: file's FAT indexed
bit 6: read audit (to be implemented)
bit 7: write audit (to be implemented)
----------21B8-------------------------------
INT 21 - Attachmate Extra - DISABLE HOST BUFFER UPDATES
AH = B8h
AL = window number (1-4=host B-E)
DL = 01h
Notes: only valid in CUT mode
next AID keystroke (eg Enter) enables host buffer updates
SeeAlso: AH=A4h
----------21B800-----------------------------
INT 21 - Novell NetWare - PRINT SERVICES - GET DEFAULT CAPTURE FLAGS
AX = B800h
CX = size of reply buffer (01h-3Fh)
ES:BX -> reply buffer for capture flags table (see below)
Return: AL = status
00h successful
Note: this function is supported by Advanced NetWare 2.0+
SeeAlso: AX=B801h,AX=B802h,AH=DFh/DL=00h,AH=DFh/DL=04h
Format of capture flags table:
Offset Size Description
00h BYTE status (used internally, should be set to 00h)
01h BYTE print flags
bit 2: print capture file if interrupted by loss of connection
3: no automatic form feed after print job
6: printing control sequences interpreted by print service
7: print banner page before capture file
02h BYTE tab size (01h-12h, default 08h)
03h BYTE printer number on server (00h-04h, default 00h)
04h BYTE number of copies to print (00h-FFh, default 01h)
05h BYTE form type required in printer (default 00h)
06h BYTE reserved
07h 13 BYTEs text to be placed on banner page
14h BYTE reserved
15h BYTE default local printer (00h = LPT1)
16h WORD timeout in clock ticks for flushing capture file on inactivity
(big-endian)
0000h = never timeout
18h BYTE flush capture file on LPT close if nonzero
19h WORD maximum lines per page (big-endian)
1Bh WORD maximum characters per line (big-endian)
1Dh 13 BYTEs name of form required in printer
2Ah BYTE LPT capture flag
00h inactive, FFh LPT device is being captured
2Bh BYTE file capture flag
00h if no file specified, FFh if capturing to file
2Ch BYTE timing out (00h if no timeout in effect, FFh if timeout counter
running)
2Dh DWORD address of printer setup string (big-endian)
31h DWORD address of printer reset string (big-endian)
35h BYTE target connection ID
36h BYTE capture in progress if FFh
37h BYTE job queued for printing if FFh
38h BYTE print job valid if FFh
39h DWORD bindery object ID of print queue if previous byte FFh
3Dh WORD print job number (1-999) `````(big-endian)
----------21B801-----------------------------
INT 21 - Novell NetWare - PRINT SERVICES - SET DEFAULT CAPTURE FLAGS
AX = B801h
CX = size of buffer (01h-3Fh)
ES:BX -> buffer containing capture flags table (see below)
Return: AL = status
00h successful
Note: this function is supported by Advanced NetWare 2.0+
SeeAlso: AX=B800h,AX=B803h,AH=DFh/DL=00h,AH=DFh/DL=04h
----------21B802-----------------------------
INT 21 - Novell NetWare - PRINT SERVICES - GET SPECIFIC CAPTURE FLAGS
AX = B802h
CX = size of reply buffer (01h-3Fh)
DH = LPT port (00h-02h)
ES:BX -> reply buffer for capture flags table (see AX=B800h)
Return: AL = status
00h successful
Note: this function is supported by Advanced NetWare 2.1+
SeeAlso: AX=B800h,AX=B803h,AH=DFh/DL=00h,AH=DFh/DL=04h
----------21B803-----------------------------
INT 21 - Novell NetWare - PRINT SERVICES - SET SPECIFIC CAPTURE FLAGS
AX = B803h
CX = size of buffer (01h-3Fh)
DH = LPT port (00h-02h)
ES:BX -> buffer containing capture flags table (see below)
Return: AL = status
00h successful
Note: this function is supported by Advanced NetWare 2.1+
SeeAlso: AX=B800h,AX=B803h,AH=DFh/DL=00h,AH=DFh/DL=04h
----------21B804-----------------------------
INT 21 - Novell NetWare - PRINT SERVICES - GET DEFAULT LOCAL PRINTER
AX = B804h
Return: DH = default LPT port (00h-02h)
Note: this function is supported by Advanced NetWare 2.1+
SeeAlso: AX=B800h,AX=B805h,AH=DFh/DL=00h
----------21B805-----------------------------
INT 21 - Novell NetWare - PRINT SERVICES - SET DEFAULT LOCAL PRINTER
AX = B805h
DH = new default LPT port (00h-02h)
Return: AL = status
00h successful
Note: this function is supported by Advanced NetWare 2.1+
SeeAlso: AX=B800h,AX=B804h,AH=DFh/DL=00h
----------21B806-----------------------------
INT 21 - Novell NetWare - PRINT SERVICES - SET CAPTURE PRINT QUEUE
AX = B806h
DH = LPT port (00h-02h)
BX:CX = print queue's object ID
Return: AL = status
00h successful
FFh job already set
Desc: specify the print queue on which a print job is to be placed the next
time a capture is started on the given printer port
Note: this function is supported by Advanced NetWare 2.1+
SeeAlso: AX=B801h,AX=B807h,AX=E009h
----------21B807-----------------------------
INT 21 - Novell NetWare - PRINT SERVICES - SET CAPTURE PRINT JOB
AX = B807h
DH = LPT port (00h-02h)
BX = job number (see AH=E3h/SF=68h)
SI:DI:CX = NetWare file handle (see AH=E3h/SF=68h)
Return: AL = status
00h successful
FFh job already queued
Desc: specify the capture file and print job to be used for subsequent
output to the given printer port
Note: this function is supported by Advanced NetWare 2.1+
SeeAlso: AX=B801h,AX=B806h,AX=E009h,AH=E3h/SF=68h
----------21B808-----------------------------
INT 21 - Novell NetWare - PRINT SERVICES - GET BANNER USER NAME
AX = B808h
ES:BX -> 12-byte buffer for user name
Return: AL = status
00h successful
Desc: get the user name which is printed on the banner page
Notes: this function is supported by Advanced NetWare 2.1+
the default name is the login name of the user
SeeAlso: AX=B809h
----------21B809-----------------------------
INT 21 - Novell NetWare - PRINT SERVICES - GET BANNER USER NAME
AX = B809h
ES:BX -> 12-byte buffer containing user name
Return: AL = status
00h successful
Desc: specify the user name which is printed on the banner page
Notes: this function is supported by Advanced NetWare 2.1+
the default name is the login name of the user
SeeAlso: AX=B808h
----------21BB-------------------------------
INT 21 - Novell NetWare - WORKSTATION - SET END OF JOB STATUS
AH = BBh
AL = new EOJ flag
00h disable EOJs
01h enable EOJs
Return: AL = old EOJ flag
Desc: specify whether the network shell should automatically generate an
End of Job call when the root command processor regains control
Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAlso: AH=D6h
----------21BBBB-----------------------------
INT 21 - VIRUS - "Hey You" - INSTALLATION CHECK
AX = BBBBh
Return: AX = 6969h
SeeAlso: AH=ABh"VIRUS",AH=BEh"VIRUS"
----------21BC-------------------------------
INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - LOG PHYSICAL RECORD
AH = BCh
AL = flags
bit 0: lock as well as log record
1: non-exclusive lock
BX = file handle
CX:DX = starting offset in file
SI:DI = length of region to lock
BP = timeout in timer ticks (1/18 sec)
0000h = don't wait if already locked
Return: AL = status
00h successful
96h no dynamic memory for file
FEh timed out
FFh failed
Desc: add the specified physical record to the log table, optionally locking
it
Note: this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAlso: AH=5Ch,AH=BDh,AH=BEh,AH=BFh,AH=C2h,AH=D0h
----------21BD-------------------------------
INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - RELEASE PHYSICAL RECORD
AH = BDh
BX = file handle
CX:DX = starting offset in file
SI:DI = length of record
Return: AL = status
00h successful
FFh record not locked
Desc: unlock the specified physical record but do not remove it from log
table
Note: this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAlso: AH=BCh,AH=BEh"NetWare",AH=C0h,AH=C3h,AH=D2h
----------21BE-------------------------------
INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - CLEAR PHYSICAL RECORD
AH = BEh
BX = file handle
CX:DX = starting offset within file
SI:DI = record length in bytes
Return: AL = status
00h successful
FFh specified record not locked
Desc: unlock the physical record and remove it from the log table
Note: this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAlso: AH=5Ch,AH=BCh,AH=BDh,AH=C1h,AH=C4h,AH=D4h
----------21BE-------------------------------
INT 21 - VIRUS - "Datalock" - INSTALLATION CHECK
AH = BEh
Return: AX = 1234h if resident
SeeAlso: AX=BBBBh,AX=BE00h
----------21BE00-----------------------------
INT 21 - VIRUS - "USSR-1049" - INSTALLATION CHECK
AX = BE00h
CF set
Return: CF clear if resident
SeeAlso: AH=BEh"VIRUS",AH=C0h"VIRUS"
----------21BF-------------------------------
INT 21 - Novell NetWare 4.6, Alloy NTNX - LOG/LOCK RECORD (FCB)
AH = BFh
AL = flags
bit 0: lock as well as log record
1: non-exclusive lock
DS:DX -> opened FCB (see AH=0Fh)
BX:CX = offset
BP = lock timeout in timer ticks (1/18 sec)
SI:DI = length
Return: AL = error code (see AH=BCh)
SeeAlso: AH=BCh,AH=C0h"NetWare",AH=C2h"NetWare"
----------21C0-------------------------------
INT 21 - Novell NetWare 4.6, Alloy NTNX - RELEASE RECORD (FCB)
AH = C0h
DS:DX -> FCB (see AH=0Fh)
BX:CX = offset
Return: AL = error code (see AH=BCh)
Note: unlocks record but does not remove it from log table
SeeAlso: AH=BDh,AH=BFh,AH=C1h"NetWare",AH=C3h
----------21C0-------------------------------
INT 21 - VIRUS - "Slow"/"Zerotime", "Solano" - INSTALLATION CHECK
AH = C0h
Return: AX = 0300h if "Slow"/"Zerotime" resident
AX = 1234h if "Solano" resident
SeeAlso: AX=BE00h,AH=C1h"VIRUS",AX=C301h"VIRUS"
----------21C1-------------------------------
INT 21 - Novell NetWare 4.6, Alloy NTNX - CLEAR RECORD (FCB)
AH = C1h
DS:DX -> opened FCB (see AH=0Fh)
BX:CX = offset
Return: AL = error code (see AH=BCh)
Note: unlocks record and removes it from log table
SeeAlso: AH=BEh,AH=C0h"NetWare",AH=C4h
----------21C1-------------------------------
INT 21 - VIRUS - "Solano" - ???
AH = C1h
???
Return: ???
SeeAlso: AH=C0h"VIRUS"
----------21C2-------------------------------
INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - LOCK PHYSICAL RECORD SET
AH = C2h
AL = flags
bit 1: non-exclusive lock
BP = lock timeout in timer ticks (1/18 sec) 0000h = no wait
Return: AL = status
00h successful
FEh timed out
FFh failed
Desc: attempt to lock all physical records listed in the log table
Notes: this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
Alloy NTNX
status FFh will be retuend if one or more physical records have been
exclusively locked by another process
SeeAlso: AH=BFh,AH=C3h,AH=D1h
----------21C2-------------------------------
INT 21 - VIRUS - "Scott's Valley" - ???
AH = C2h
???
Return: ???
SeeAlso: AH=C0h"VIRUS"
----------21C3-------------------------------
INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - RELEASE PHYSICAL RECRD SET
AH = C3h
Desc: unlock all currently-locked physical records in the log table, but do
not remove them from the table
Note: this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAlso: AH=BDh,AH=C0h,AH=C2h"NetWare",AH=C4h,AH=D3h
----------21C301DXF1F1-----------------------
INT 21 - VIRUS - "905"/"Backfont" - INSTALLATION CHECK
AX = C301h
DX = F1F1h
Return: DX = 0E0Eh if resident
SeeAlso: AH=C0h"VIRUS",AX=C500h"VIRUS"
----------21C4-------------------------------
INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - CLEAR PHYSICAL RECORD SET
AH = C4h
Desc: unlock all physical records in the log table and remove them from the
log table
Note: this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAlso: AH=BEh,AH=C1h,AH=D5h
----------21C500-----------------------------
INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - OPEN SEMAPHORE
AX = C500h
DS:DX -> semaphore name (counted string, max 127 bytes)
CL = initial value for semaphore
Return: AL = status
00h successful
BL = number of processes having semaphore open
CX:DX = semaphore handle
FEh invalid name length
FFh invalid semaphore value
Notes: this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
Alloy NTNX
the semaphore's value is incremented by AX=C503h and decremented by
AX=C502h
SeeAlso: AX=C501h,AX=C502h,AX=C503h,AX=C504h
----------21C500-----------------------------
INT 21 - VIRUS - "Sverdlov" - INSTALLATION CHECK
AX = C500h
Return: AX = 6731h if resident
SeeAlso: AX=C301h"VIRUS",AH=C6h"VIRUS"
----------21C501-----------------------------
INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - EXAMINE SEMAPHORE
AX = C501h
CX:DX = semaphore handle
Return: AL = status
00h successful
CX = semaphore value (-127 to 127)
DL = count of processes which have the semaphore open
FFh invalid handle
Note: this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAlso: AX=C500h"NetWare",AX=C502h,AX=C504h
----------21C502-----------------------------
INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - WAIT ON SEMAPHORE
AX = C502h
CX:DX = semaphore handle
BP = timeout limit in timer ticks (1/18 sec)
0000h return immediately if semaphore already zero or negative
Return: AL = status
00h successful
FEh timeout
FFh invalid handle
Desc: decrement the semaphore's value, optionally waiting until its value
becomes positive before decrementing
Note: this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAlso: AX=C500h"NetWare",AX=C501h,AX=C503h
----------21C503-----------------------------
INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - SIGNAL SEMAPHORE
AX = C503h
CX:DX = semaphore handle
Return: AL = status
00h successful
01h semaphore value overflowed
FFh invalid handle
Desc: increment the semaphore's value and signal the first process (if any)
in the queue waiting on the semaphore
Note: this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAlso: AX=C500h"NetWare",AX=C502h
----------21C504-----------------------------
INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - CLOSE SEMAPHORE
AX = C504h
CX:DX = semaphore handle
Return: AL = status
00h successful
FFh invalid handle
Desc: decrement the semaphore's open count, and delete the semaphore if the
count reaches zero
Note: this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAlso: AX=C500h"NetWare",AX=C501h
----------21C6-------------------------------
INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - GET OR SET LOCK MODE
AH = C6h
AL = subfunction
00h set old "compatibility" mode (default)
01h set new extended locks mode
02h get lock mode
Return: AL = current lock mode
Note: this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
Alloy NTNX
the locking mode should be 01h for NetWare 4.61+ and Advanced
NetWare 1.0+ locking calls, and 00h for all older calls
SeeAlso: AH=BCh,AH=C4h,AH=D0h
----------21C6-------------------------------
INT 21 - VIRUS - "Socha" - INSTALLATION CHECK
AH = C6h
Return: AL = 55h if resident
SeeAlso: AX=C500h"VIRUS",AX=C603h
----------21C603-----------------------------
INT 21 - VIRUS - "Yankee" or "MLTI" - INSTALLATION CHECK
AX = C603h
CF set
Return: CF clear if resident
SeeAlso: AX=C500h"VIRUS",AX=C700h"VIRUS"
----------21C700-----------------------------
INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - BEGIN TRANSACTION
AX = C700h
Return: CF clear if successful
AL = 00h
CF set on error
AL = error code
96h out of memory
FEh implicit transaction already active, converted to explicit
FFh explicit transaction already active
Note: this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
SeeAlso: AX=C701h,AX=C702h,AX=C703h
----------21C700-----------------------------
INT 21 - VIRUS - "MH-757" - INSTALLATION CHECK
AX = C700h
Return: AL = 07h if resident
SeeAlso: AX=C603h"VIRUS",AH=CBh"VIRUS"
----------21C701-----------------------------
INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - END TRANSACTION
AX = C701h
Return: AL = status
00h successful
CX:DX = transaction number
FDh transaction tracking disabled
FEh transaction ended records locked
FFh no explicit transaction active
CF clear except when AL=FFh
Note: this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
SeeAlso: AX=C700h"NetWare",AX=C703h
----------21C702-----------------------------
INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - INSTALLATION CHECK
AX = C702h
Return: AL = status
00h not available
01h available
FDh available but disabled
Desc: determine whether the default file server supports TTS
Note: this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
----------21C703-----------------------------
INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - ABORT TRANSACTION
AX = C703h
Return: CF clear if successful
AL = 00h
CF set on error
AL = error code
FDh transaction tracking disabled, no backout
FEh transaction ended records locked
FFh no explicit transaction active
Note: this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
SeeAlso: AX=C700h"NetWare",AX=C701h,AX=C704h
----------21C704-----------------------------
INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - TRANSACTION STATUS
AX = C704h
CX:DX = transaction number (see AX=C701h)
Return: AL = status
00h successful
FFh not yet written to disk
Desc: verify that a transaction has actually been written to disk
Notes: this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
transactions are written to disk in the order in which they are ended,
but it may take as much as five seconds for the data to be written
SeeAlso: AX=C700h"NetWare",AX=C701h,AX=C703h
----------21C705-----------------------------
INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - GET APPLICTN THRESHOLDS
AX = C705h
Return: AL = status
00h successful
CL = maximum logical record locks (default 0)
CH = maximum physical record locks (default 0)
Desc: get the per-application limits on record locks allowed before an
implicit transaction is begun
Notes: this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
if either limit is FFh, implicit transactions are disabled for the
corresponding lock type
SeeAlso: AX=C706h,AX=C707h
----------21C706-----------------------------
INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - SET APPLICTN THRESHOLDS
AX = C706h
CL = maximum logical record locks (default 0)
CH = maximum physical record locks (default 0)
Return: AL = status
00h successful
Desc: specify the per-application limits on record locks allowed before an
implicit transaction is begun
Notes: this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
if either limit is set to FFh, implicit transactions are disabled for
the corresponding lock type
SeeAlso: AX=C705h,AX=C708h
----------21C707-----------------------------
INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - GET WORKSTN THRESHOLDS
AX = C707h
Return: AL = status
00h successful
CL = maximum logical record locks (default 0)
CH = maximum physical record locks (default 0)
Desc: get the per-workstation limits on record locks allowed before an
implicit transaction is begun
Notes: this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
if either limit is FFh, implicit transactions are disabled for the
corresponding lock type
SeeAlso: AX=C705h,AX=C708h
----------21C708-----------------------------
INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - SET WORKSTN THRESHOLDS
AX = C708h
CL = maximum logical record locks (default 0)
CH = maximum physical record locks (default 0)
Return: AL = status
00h successful
Desc: specify the per-workstation limits on record locks allowed before an
implicit transaction is begun
Notes: this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
if either limit is set to FFh, implicit transactions are disabled for
the corresponding lock type
SeeAlso: AX=C706h,AX=C707h
----------21C8-------------------------------
INT 21 - Novell NetWare 4.0 - BEGIN LOGICAL FILE LOCKING
AH = C8h
if function C6h lock mode 00h:
DL = mode
00h no wait
01h wait
if function C6h lock mode 01h:
BP = timeout in timer ticks (1/18 sec)
Return: AL = error code
SeeAlso: AH=C9h
----------21C9-------------------------------
INT 21 - Novell NetWare 4.0 - END LOGICAL FILE LOCKING
AH = C9h
Return: AL = error code
SeeAlso: AH=C8h
----------21CA-------------------------------
INT 21 - Novell NetWare 4.0, Alloy NTNX - LOG/LOCK PERSONAL FILE (FCB)
AH = CAh
DS:DX -> FCB (see AH=0Fh)
if function C6h lock mode 01h:
AL = log and lock flag
00h log file only
01h lock as well as log file
BP = lock timeout in timer ticks (1/18 sec)
Return: AL = error code
00h successful
96h no dynamic memory for file
FEh timeout
FFh failed
SeeAlso: AH=CBh
----------21CA15-----------------------------
INT 21 - VIRUS - "Piter" - ???
AX = CA15h
???
Return: ???
SeeAlso: AH=CCh"VIRUS"
----------21CB-------------------------------
INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - LOCK FILE SET
AH = CBh
if function C6h lock mode 00h:
DL = mode
00h no wait
01h wait
if function C6h lock mode 01h:
BP = lock timeout in timer ticks (1/18 sec) 0000h = no wait
Return: AL = status
00h successful
FEh timed out
FFh failed
Desc: attempt to lock all files listed in the log table
Notes: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX
status FFh will be returned if one or more of the files have already
been exclusively locked by another process
SeeAlso: AH=CAh,AH=CDh,AH=D1h,AH=EBh
----------21CB-------------------------------
INT 21 - VIRUS - "Milous" - INSTALLATION CHECK
AH = CBh
Return: AL = 07h if resident
SeeAlso: AX=C700h"VIRUS",AX=CB02h
----------21CB02-----------------------------
INT 21 - VIRUS - "Witcode" - INSTALLATION CHECK
AX = CB02h
Return: AX = 02CBh if resident
SeeAlso: AH=CBh"VIRUS",AH=CCh"VIRUS"
----------21CC-------------------------------
INT 21 - Novell NetWare 4.0, Alloy NTNX - RELEASE FILE (FCB)
AH = CCh
DS:DX -> FCB (see AH=0Fh)
Return: none
Note: unlocks file, but does not remove it from the log table or close it
SeeAlso: AH=CAh,AH=CDh
----------21CC-------------------------------
INT 21 - VIRUS - "Westwood" - INSTALLATION CHECK
AH = CCh
Return: AX = 0700h if resident
SeeAlso: AX=CB02h,AH=CDh"VIRUS",AX=D000h"VIRUS"
----------21CD-------------------------------
INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - RELEASE FILE SET
AH = CDh
Return: none
Desc: unlock all files listed in the log table, but don't remove them from
the table
Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAlso: AH=CBh,AH=CCh,AH=CFh,AH=D3h
----------21CD-------------------------------
INT 21 - VIRUS - "Westwood" - ???
AH = CDh
???
Return: ???
SeeAlso: AH=CCh"VIRUS"
----------21CE-------------------------------
INT 21 - Novell NetWare 4.0, Alloy NTNX - CLEAR FILE (FCB)
AH = CEh
DS:DX -> FCB (see AH=0Fh)
Return: AL = error code
Note: unlocks file and removes it from log table, then closes all opened and
logged occurrences
SeeAlso: AH=CAh,AH=CFh,AH=EDh"NetWare"
----------21CF-------------------------------
INT 21 - LANstep - ???
AH = CFh
???
Return: ???
Note: LANstep is a redesign of the Waterloo Microsystems PORT network
----------21CF-------------------------------
INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - CLEAR FILE SET
AH = CFh
Return: AL = 00h
Desc: unlock and remove all files from log table
Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAlso: AH=CAh,AH=CEh,AH=EBh"NetWare"
----------21D0-------------------------------
INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - LOG LOGICAL RECORD
AH = D0h
DS:DX -> record string (counted string, max 99 data bytes)
if function C6h lock mode 01h: (Novell, NTNX only)
AL = flags
bit 0: lock as well as log the record
bit 1: non-exclusive lock
BP = lock timeout in timer ticks (1/18 sec)
Return: AL = status
00h successful
96h no dynamic memory for file
FEh timed out
FFh unsuccessful
Desc: add the specified logical record name to the log table, and optionally
lock the record
Notes: this function is supported by NetWare 4.6+, Advanced NetWare 1.0+,
Banyan VINES, and Alloy NTNX
locks on logical record names are advisory and may be ignored by other
applications
SeeAlso: AH=BCh,AH=D1h,AH=D2h,AH=D4h,AH=EBh
----------21D000-----------------------------
INT 21 - VIRUS - "Fellowship" - INSTALLATION CHECK
AX = D000h
Return: BX = 1234h if resident
SeeAlso: AH=CCh"VIRUS",AH=D5h"VIRUS",AX=D5AAh
----------21D1-------------------------------
INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - LOCK LOGICAL RECORD SET
AH = D1h
AL = lock type (00h exclusive, 01h shareable)
if function C6h lock mode 00h:
DL = mode
00h no wait
01h wait
if function C6h lock mode 01h: (Novell only)
BP = lock timeout in timer ticks (1/18 sec) 0000h = no wait
0000h no wait
Return: AL = status (see AH=CBh)
Desc: attempt to lock all logical record names listed in the log table
Notes: this function is supported by NetWare 4.6+, Advanced Netware 1.0+,
Banyan VINES, and Alloy NTNX
status FFh will be returned if one or more logical records have been
exclusively locked by another process
locks on logical record names are advisory and may be ignored by other
applications
SeeAlso: AH=C2h,AH=CBh,AH=D0h,AH=D3h,AH=D5h
----------21D2-------------------------------
INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - RELEASE LOGICAL RECORD
AH = D2h
DS:DX -> semaphore identifier (counted string up to 99 chars long)
Return: AL = status
00h successful
FFh no such record
Desc: unlock the logical record name but do not remove it from the log table
Notes: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+,
Banyan VINES, and Alloy NTNX
locks on logical record names are advisory and may be ignored by other
applications
SeeAlso: AH=BDh,AH=D0h,AH=D3h,AH=D4h
----------21D3-------------------------------
INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - RELEASE LOGICAL RECORD SET
AH = D3h
Desc: unlock all currently-locked logical record names in the log table, but
do not remove them from the table
Notes: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+,
Banyan VINES, and Alloy NTNX
locks on logical record names are advisory and may be ignored by other
applications
SeeAlso: AH=C3h,AH=CDh,AH=D1h,AH=D2h,AH=D5h
----------21D4-------------------------------
INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - CLEAR LOGICAL RECORD
AH = D4h
DS:DX -> logical record name (counted string up to 99 chars long)
Return: AL = status
00h successful
FFh no such record name
Desc: unlock and remove the logical record name from the log table
Notes: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+,
Banyan VINES, and Alloy NTNX
locks on logical record names are advisory and may be ignored by other
applications
SeeAlso: AH=BEh,AH=D0h,AH=D2h,AH=D5h
----------21D5-------------------------------
INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - CLEAR LOGICAL RECORD SET
AH = D5h
Return: AL = error code (see AH=D4h)
Desc: unlock and remove all logical record name from the log table
Notes: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+,
Banyan VINES, and Alloy NTNX
locks on logical record names are advisory and may be ignored by other
applications
SeeAlso: AH=D1h,AH=D3h,AH=D4h
----------21D5-------------------------------
INT 21 - VIRUS - "Carfield" - ???
AH = D5h
???
Return: ???
SeeAlso: AX=D5AAh,AH=F3h"Carfield"
----------21D5AA-----------------------------
INT 21 - VIRUS - "Diamond-A", "Diamond-B" - INSTALLATION CHECK
AX = D5AAh
Return: AX = 2A55h if "Diamond-A" resident
AX = 2A03h if "Diamond-B"-family virus resident
SeeAlso: AX=D000h,AH=D5h"VIRUS",AX=D5AAh/BP=DEAAh
----------21D5AABPDEAA-----------------------
INT 21 - VIRUS - "Dir" - INSTALLATION CHECK
AX = D5AAh
BP = DEAAh
Return: SI = 4321h if resident
SeeAlso: AX=D5AAh,AX=DADAh"VIRUS"
----------21D6-------------------------------
INT 21 - Novell NetWare - WORKSTATION - END OF JOB
AH = D6h
BX = job flag (0000h current job, FFFFh all processes on workstation)
Return: AL = error code
Desc: unlocks and clears all locked or logged files and records held by the
process(es), closes all files, resets error and lock modes, and
releases all network resources
Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAlso: AH=BBh,AH=D7h
----------21D7-------------------------------
INT 21 - Novell NetWare - CONNECTION SERVICES - SYSTEM LOGOUT
AH = D7h
Return: AL = error code
Desc: this function closes the caller's open files, logs it out from all
file servers, detaches the workstation from all non-default file
servers, and maps a drive to the default server's SYS:LOGIN directory
Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAlso: AH=D6h,AH=E3h/SF=14h,AH=F1h
----------21D8-------------------------------
INT 21 - Novell NetWare, Banyan VINES - ALLOCATE RESOURCE
AH = D8h
DL = resource number
Return: AL = status
00h successful
FFh unsucessful
SeeAlso: AH=D9h
----------21D9-------------------------------
INT 21 - Novell NetWare, Banyan VINES - DEALLOCATE RESOURCE
AH = D9h
DL = resource number
Return: AL = status (see AH=D8h)
SeeAlso: AH=D8h
----------21DA-------------------------------
INT 21 - Novell NetWare - DIRECTORY SERVICES - GET VOLUME INFO WITH NUMBER
AH = DAh
DL = volume number
ES:DI -> reply buffer (see below)
Return: AL = 00h
Note: this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
SeeAlso: AH=36h,AH=E2h/SF=15h,AH=E3h/SF=E9h
Format of reply buffer:
Offset Size Description
00h WORD sectors/block
02h WORD total blocks on volume
04h WORD unused blocks
06h WORD total directory entries
08h WORD unused directory entries
0Ah 16 BYTEs volume name, null padded
1Ah WORD removable flag, 0000h = not removable
Note: all words are big-endian
----------21DADA-----------------------------
INT 21 - VIRUS - "Gotcha" - INSTALLATION CHECK
AX = DADAh
Return: AH = A5h
SeeAlso: AX=D5AAh,AH=DAFEh"VIRUS"
----------21DAFE-----------------------------
INT 21 - VIRUS - "Plovdiv 1.3" - INSTALLATION CHECK
AX = DAFEh
Return: AX = 1234h if resident
SeeAlso: AX=DADAh,AH=DDh"VIRUS",AH=DEh"VIRUS"
----------21DB-------------------------------
INT 21 - Novell NetWare - WORKSTATION - GET NUMBER OF LOCAL DRIVES
AH = DBh
Return: AL = number of local disks as set by LASTDRIVE in CONFIG.SYS
Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAlso: AH=0Eh
----------21DC-------------------------------
INT 21 - Novell NetWare - CONNECTION SERVICES - GET CONNECTION NUMBER
AH = DCh
Return: AL = logical connection number
00h if NetWare not loaded or this machine is a non-dedicated server
CX = station number in ASCII (CL = first digit)
Notes: this function is supported by NetWare 4.0+, Banyan VINES, and Alloy
NTNX
station number only unique for those PCs connected to same semaphore
service
----------21DC-------------------------------
INT 21 - PCMag PCMANAGE/DCOMPRES - TURN ON/OFF
AH = DCh
DX = state
0000h turn on
0001h turn off
SeeAlso: AX=FEDCh
----------21DD-------------------------------
INT 21 - Novell NetWare - WORKSTATION - SET NetWare ERROR MODE
AH = DDh
DL = error mode
00h invoke INT 24 on critical I/O errors (default)
01h return NetWare extended error code in AL
02h return error code in AL, mapped to standard DOS error codes
Return: AL = previous error mode
Note: this function is supported by Advanced NetWare 2.0+
SeeAlso: INT 24
----------21DD-------------------------------
INT 21 - VIRUS - "Jerusalem"-family - RELOCATE VIRUS???
AH = DDh
CX = number of bytes to copy
DS:SI -> source of copy
ES:DI -> destination of copy
Return: does not return normally; return address is caller's CS:0100h with
AX = ???
SeeAlso: AH=E0h"VIRUS",AH=EEh"VIRUS"
----------21DE-------------------------------
INT 21 - VIRUS - "Durban" - INSTALLATION CHECK
AH = DEh
Return: AH = DFh if resident
SeeAlso: AX=DAFEh,AX=DEDEh"VIRUS"
----------21DE-------------------------------
INT 21 - VIRUS - "April 1st EXE" - ???
AH = DEh
???
Return: ???
----------21DE-------------------------------
INT 21 - Novell NetWare - MESSAGE SERVICES - SET BROADCAST MODE
AH = DEh
DL = broadcast mode
00h receive server and workstation broadcasts (default)
01h receive server broadcasts, discard user messages
02h store server broadcasts for retrieval
03h store all broadcasts for retrieval
Return: AL = new broadcast mode
Note: this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
----------21DE--DL04-------------------------
INT 21 - Novell NetWare - MESSAGE SERVICES - GET BROADCAST MODE
AH = DEh
DL = 04h
Return: AL = current broadcast mode
00h receive server and workstation broadcasts (default)
01h receive server broadcasts, discard user message
02h store server broadcasts for retrieval
03h store all broadcasts for retrieval
Note: this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
----------21DE-------------------------------
INT 21 - Novell NetWare 4.0 - SHELL TIMER INTERRUPT CHECKS
AH = DEh
DL = function
05h disable shell timer interrupt checks
06h enable shell timer interrupt checks
Return: ???
----------21DEDE-----------------------------
INT 21 - VIRUS - "Brothers" - INSTALLATION CHECK
AX = DEDEh
Return: AH = 41h if resident
SeeAlso: AH=DEh"VIRUS",AH=E0h"VIRUS"
----------21DF--DL00-------------------------
INT 21 - Novell NetWare - PRINT SERVICES - START LPT CAPTURE
AH = DFh
DL = 00h
Return: AL = status
00h successful
Desc: this function redirects the default LPT to a capture file on the file
server
Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX; under NTNX, it sends a print break (see INT 17/AH=84h)
a print job is queued when the first character of output is captured
SeeAlso: AX=B800h,AX=B804h,AH=DFh/DL=01h,AH=DFh/DL=02h,AH=DFh/DL=03h
SeeAlso: AH=DFh/DL=04h,AX=F003h
----------21DF--DL01-------------------------
INT 21 - Novell NetWare - PRINT SERVICES - END LPT CAPTURE
AH = DFh
DL = 01h
Return: AL = status
00h successful
Desc: stop redirecting the default LPT, close the capture file, and release
the job in the print queue for printing
Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX; under NTNX, it sends a print break (see INT 17/AH=84h)
after this call, the default LPT defaults to local printing
SeeAlso: AH=DFh/DL=00h,AH=DFh/DL=02h,AH=DFh/DL=03h,AH=DFh/DL=05h
----------21DF--DL02-------------------------
INT 21 - Novell NetWare - PRINT SERVICES - CANCEL LPT CAPTURE
AH = DFh
DL = 02h
Return: AL = status
00h successful
Desc: this function ends the capture of the default LPT, removes the job from
the print queue, and deletes the capture file unless it is a
permanent capture file
Notes: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX; under NTNX, it sends a print break (see INT 17/AH=84h)
after this call, the default LPT defaults to local printing
SeeAlso: AH=DFh/DL=00h,AH=DFh/DL=06h
----------21DF--DL02-------------------------
INT 21 - Novell NetWare - PRINT SERVICES - FLUSH LPT CAPTURE
AH = DFh
DL = 03h
Return: AL = status
00h successful
Desc: this function closes the current capture file for the default LPT
and starts printing it if it is not a permanent capture file
Notes: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX; under NTNX, it sends a print break (see INT 17/AH=84h)
if more data is sent to the LPT port after this call, a new capture
file will be opeend
SeeAlso: AH=DFh/DL=00h,AH=DFh/DL=01h,AH=DFh/DL=02h,AH=DFh/DL=07h
----------21DF--DL04-------------------------
INT 21 - Novell NetWare - PRINT SERVICES - START SPECIFIC LPT CAPTURE
AH = DFh
DL = 04h
DH = LPT port (00h-02h)
Return: AL = status
00h successful
Desc: this function redirects the specified LPT to a capture file on the file
server
Notes: this function is supported by Advanced NetWare 2.1+
a print job is queued when the first character of output is captured
SeeAlso: AX=B800h,AH=DFh/DL=00h,AH=DFh/DL=05h,AH=DFh/DL=06h,AH=DFh/DL=07h
SeeAlso: AX=F003h
----------21DF--DL05-------------------------
INT 21 - Novell NetWare - PRINT SERVICES - END SPECIFIC LPT CAPTURE
AH = DFh
DL = 05h
DH = LPT port (00h-02h)
Return: AL = status
00h successful
Desc: stop redirecting the specified LPT, close the capture file, and release
the job in the print queue for printing
Notes: this function is supported by Advanced NetWare 2.1+
after this call, the specified LPT defaults to local printing
SeeAlso: AH=DFh/DL=01h,AH=DFh/DL=04h,AH=DFh/DL=06h,AH=DFh/DL=07h
----------21DF--DL06-------------------------
INT 21 - Novell NetWare - PRINT SERVICES - CANCEL SPECIFIC LPT CAPTURE
AH = DFh
DL = 06h
DH = LPT port (00h-02h)
Return: AL = status
00h successful
Desc: this function ends the capture of the specified LPT, removes the job
from the print queue, and deletes the capture file unless it is a
permanent capture file
Notes: this function is supported by Advanced NetWare 2.1+
after this call, the specified LPT defaults to local printing
SeeAlso: AH=DFh/DL=02h,AH=DFh/DL=04h,AH=DFh/DL=05h,AH=DFh/DL=07h
----------21DF--DL07-------------------------
INT 21 - Novell NetWare - PRINT SERVICES - FLUSH SPECIFIC LPT CAPTURE
AH = DFh
DL = 07h
DH = LPT port (00h-02h)
Return: AL = status
00h successful
Desc: this function closes the current capture file for the specified LPT
and starts printing it if it is not a permanent capture file
Notes: this function is supported by Advanced NetWare 2.1+
if more data is sent to the LPT port after this call, a new capture
file will be opeend
SeeAlso: AH=DFh/DL=03h,AH=DFh/DL=04h,AH=DFh/DL=05h,AH=DFh/DL=06h
----------21E0-------------------------------
INT 21 - Digital Research DOS Plus - CALL BDOS
AH = E0h
CL = BDOS function number (see INT E0"CP/M")
other registers as appropriate for function
Return: as appropriate for function
SeeAlso: AX=4459h,INT E0"CP/M"
----------21E0-------------------------------
INT 21 - OS/286, OS/386 - INITIALIZE REAL PROCEDURE
AH = E0h
???
Return: ???
SeeAlso: AH=E1h"OS/286"
----------21E0-------------------------------
INT 21 - DoubleDOS - MENU CONTROL
AH = E0h
AL = subfunction
01h exchange tasks
73h resume invisible job if suspended
74h kill other job
75h suspend invisible job
Note: identical to AH=F0h
SeeAlso: AH=F0h"DoubleDOS"
----------21E0-------------------------------
INT 21 - VIRUS - "Jerusalem", "Armagedon" - INSTALLATION CHECK
AH = E0h
Return: AX = 0300h if "Jerusalem" resident
AX = DADAh if "Armagedon" resident
SeeAlso: AH=DEh"VIRUS",AX=DEDEh"VIRUS",AX=E00Fh
----------21E0-------------------------------
INT 21 - Novell NetWare 4.0, Alloy NTNX - PRINT SPOOLING
AH = E0h
DS:SI -> request buffer
ES:DI -> reply buffer
subfunction in third byte of request buffer
00h spool data to a capture file
01h close and queue capture file
02h set spool flags
03h spool existing file
04h get spool queue entry
05h remove entry from spool queue
Return: AL = status
----------21E0--SF06-------------------------
INT 21 - Novell NetWare - PRINT SERVICES - GET PRINTER STATUS
AH = E0h subfn 06h
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status
00h successful
FFh no such printer
Desc: get current state of specified printer attached to the server
Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX
Format of request buffer:
Offset Size Description
00h WORD 0002h (length of following data)
02h BYTE 06h (subfunction "Get Printer Status")
03h BYTE printer number (00h-04h)
Format of reply buffer:
Offset Size Description
00h WORD (call) 0004h (size of following results buffer)
02h BYTE flag: 00h printer active, FFh printer halted
03h BYTE flag: 00h printer online, 01h printer offline
04h BYTE current form type
05h BYTE target printer number (00h-04h)
same as number in request buffer unless rerouted by server
console
----------21E0--SF09-------------------------
INT 21 - Novell NetWare - PRINT SERVICES - SPECIFY CAPTURE FILE
AH = E0h subfn 09h
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status
00h successful
9Ch invalid path
Desc: create a permanent capture file for the next print capture to be
started
Notes: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX
the caller must have read, write, and create rights for the directory
containing the capture file
Format of request buffer:
Offset Size Description
00h WORD length of following data (max 102h)
02h BYTE 09h (subfunction "Specify Capture File")
03h BYTE directory handle or 00h
04h BYTE length of filename
05h N BYTEs name of capture file
Format of reply buffer:
Offset Size Description
00h WORD (call) 0000h (no results returned)
----------21E00F-----------------------------
INT 21 - VIRUS - "8-tunes" - INSTALLATION CHECK
AX = E00Fh
Return: AX = 4C31h if resident
SeeAlso: AH=E0h"VIRUS",AH=E1h"VIRUS"
----------21E1-------------------------------
INT 21 - OS/286, OS/386 - ISSUE REAL PROCEDURE CALL
AH = E1h
???
Return: ???
Note: protected mode only???
SeeAlso: AH=E0h"OS/286",AH=E2h"OS/286",AH=E3h"OS/286",AX=250Eh,INT 31/AX=0301h
----------21E1-------------------------------
INT 21 - DoubleDOS - CLEAR KEYBOARD BUFFER FOR CURRENT JOB
AH = E1h
SeeAlso: AH=E2h"DoubleDOS",AH=E3h"DoubleDOS",AH=E8h"DoubleDOS"
SeeAlso: AH=F1h"DoubleDOS"
----------21E1-------------------------------
INT 21 - VIRUS - "Mendoza", "Fu Manchu" - INSTALLATION CHECK
AH = E1h
Return: AX = 0300h if "Mendoza" resident
AX = 0400h if "Fu Manchu" resident
SeeAlso: AX=E00Fh,AH=E4h"VIRUS"
----------21E1--SF00-------------------------
INT 21 - Novell NetWare - MESSAGE SERVICES - SEND BROADCAST MESSAGE
AH = E1h subfn 00h
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status
00h successful
FEh I/O error or out of dynamic workspace
Note: this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
SeeAlso: AH=DEh"NetWare",AH=DEh/DL=04h,AH=E1h/SF=01h,AH=E1h/SF=04h
SeeAlso: AH=E1h/SF=09h
Format of request buffer:
Offset Size Description
00h WORD length of following data (max 9Eh)
02h BYTE 00h (subfunction "Send Broadcast Message")
03h BYTE number of connections (01h-64h)
04h N BYTEs list of connections to receive broadcast message
BYTE length of message (01h-37h)
N BYTEs broadcast message (no control characters or characters > 7Eh)
Format of reply buffer:
Offset Size Description
00h WORD (call) size of following results buffer (max 65h)
02h BYTE number of connections
03h N BYTEs list of per-connection results
00h successful
FCh message rejected due to lack of buffer space
FDh invalid connection number
FFh blocked (see also AH=E1h/SF=02h)
----------21E1--SF01-------------------------
INT 21 - Novell NetWare - MESSAGE SERVICES - GET BROADCAST MESSAGE
AH = E1h subfn 01h
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status
00h successful
FCh full message queue
FEh out of dynamic workspace
Note: this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
SeeAlso: AH=DEh/DL=04h,AH=E1h/SF=00h,AH=E1h/SF=05h,AH=E1h/SF=09h
Format of request buffer:
Offset Size Description
00h WORD 0001h (length of following data)
02h BYTE 01h (subfunction "Get Broadcast Message")
Format of reply buffer:
Offset Size Description
00h WORD (call) size of following results buffer (max 38h)
02h BYTE length of message (00h-37h)
00h if no broadcast messages pending
03h N BYTEs message (no control characters or characters > 7Eh)
----------21E1-------------------------------
INT 21 - Novell NetWare - MESSAGE SERVICES - ENABLE/DISABLE BROADCAST MESSAGES
AH = E1h
DS:SI -> request buffer (see below)
ES:DI -> reply buffer
Return: AL = error code
Note: these functions are supported by NetWare 4.0+ but are not listed in
_NetWare_System_Calls--DOS_; they may be obsolete
SeeAlso: AH=E1h/SF=00h,AH=E1h/SF=04h,AH=E1h/SF=09h
Format of request buffer:
Offset Size Description
00h WORD length of following data (max 9Eh)
02h BYTE subfunction
02h disable station broadcasts
03h enable station broadcasts
03h ???
Format of reply buffer:
Offset Size Description
00h WORD (call) size of following results buffer
02h ???
----------21E1--SF04-------------------------
INT 21 - Novell NetWare - MESSAGE SERVICES - SEND PERSONAL MESSAGE
AH = E1h subfn 04h
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status
00h successful
FEh I/O error or out of dynamic workspace
Notes: this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
message pipes use CPU time on the file server; IPX, SPX, or NetBIOS
connections should be used for peer-to-peer communications as these
protocols do not use file server time
SeeAlso: AH=E1h/SF=00h,AH=E1h/SF=05h,AH=E1h/SF=06h,AH=E1h/SF=08h
Format of request buffer:
Offset Size Description
00h WORD length of following data (max E5h)
02h BYTE 04h (subfunction "Send Personal Message")
03h BYTE number of connections (01h-64h)
04h N BYTEs list of connections to receive broadcast message
BYTE length of message (01h-7Eh)
N BYTEs message (no control characters or characters > 7Eh)
Format of reply buffer:
Offset Size Description
00h WORD (call) size of following results buffer (max 65h)
02h BYTE number of connections
03h N BYTEs list of per-connection results
00h successful
FCh message rejected because queue is full (contains 6 msgs)
FDh incomplete pipe
FFh failed
----------21E1--SF05-------------------------
INT 21 - Novell NetWare - MESSAGE SERVICES - GET PERSONAL MESSAGE
AH = E1h subfn 05h
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status
00h successful
FEh out of dynamic workspace
Desc: return the oldest message in the default file server's message queue
for the calling workstation
Note: this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
SeeAlso: AH=E1h/SF=01h,AH=E1h/SF=04h,AH=E1h/SF=06h,AH=E1h/SF=08h
Format of request buffer:
Offset Size Description
00h WORD 0001h (length of following data)
02h BYTE 05h (subfunction "Get Personal Message")
Format of reply buffer:
Offset Size Description
00h WORD (call) size of following results buffer (max 80h)
02h BYTE connection number of sending station
03h BYTE length of message (00h-7Eh)
00h if no personal messages pending
04h N BYTEs message (no control characters or characters > 7Eh)
----------21E1--SF06-------------------------
INT 21 - Novell NetWare - MESSAGE SERVICES - OPEN MESSAGE PIPE
AH = E1h subfn 06h
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status
00h successful
FEh out of dynamic workspace
Note: this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
SeeAlso: AH=E1h/SF=04h,AH=E1h/SF=07h,AH=E1h/SF=08h
Format of request buffer:
Offset Size Description
00h WORD length of following data (max 66h)
02h BYTE 06h (subfunction "Open Message Pipe")
03h BYTE number of pipes to open (01h-64h)
04h N BYTEs list of connection numbers
Format of reply buffer:
Offset Size Description
00h WORD (call) size of following results buffer (max 65h)
02h BYTE number of connections
03h N BYTEs list of results
00h successful
FEh incomplete (target half not yet created)
FFh failed
----------21E1--SF07-------------------------
INT 21 - Novell NetWare - MESSAGE SERVICES - CLOSE MESSAGE PIPE
AH = E1h subfn 07h
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status
00h successful
FCh full message queue
FEh out of dynamic workspace
Note: this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
SeeAlso: AH=E1h/SF=05h,AH=E1h/SF=06h,AH=E1h/SF=08h
Format of request buffer:
Offset Size Description
00h WORD length of following data (max 66h)
02h BYTE 07h (subfunction "Close Message Pipe")
03h BYTE number of pipes to close (01h-64h)
04h N BYTEs list of connection numbers
Format of reply buffer:
Offset Size Description
00h WORD (call) size of following results buffer (max 65h)
02h BYTE number of connections
03h N BYTEs list of results
00h successful
FDh failed
FFh no such pipe
----------21E1--SF08-------------------------
INT 21 - Novell NetWare - MESSAGE SERVICES - CHECK PIPE STATUS
AH = E1h subfn 08h
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status
00h successful
FCh full message queue
FEh out of dynamic workspace
Note: this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
SeeAlso: AH=E1h/SF=05h,AH=E1h/SF=06h,AH=E1h/SF=07h
Format of request buffer:
Offset Size Description
00h WORD length of following data (max 66h)
02h BYTE 08h (subfunction "Check Pipe Status")
03h BYTE number of pipes to monitor (01h-64h)
04h N BYTEs list of connection numbers
Format of reply buffer:
Offset Size Description
00h WORD (call) size of following results buffer (max 65h)
02h BYTE number of connections
03h N BYTEs list of pipe statuses
00h open
FEh incomplete
FFh closed
----------21E1--SF09-------------------------
INT 21 - Novell NetWare - MESSAGE SERVICES - BROADCAST TO CONSOLE
AH = E1h subfn 09h
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status
00h successful
FCh full message queue
FEh out of dynamic workspace
Desc: send a one-line message to the system console on the default file
server
Note: this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
SeeAlso: AH=DEh/DL=04h,AH=E1h/SF=00h,AH=E1h/SF=01h,AH=E3h/SF=D1h
Format of request buffer:
Offset Size Description
00h WORD length of following data (max 3Eh)
02h BYTE 09h (subfunction "Broadcast to Console")
03h BYTE length of message (01h-3Ch)
04h N BYTEs message (no control characters or characters > 7Eh)
Format of reply buffer:
Offset Size Description
00h WORD (call) 0000h (no results returned)
----------21E2-------------------------------
INT 21 - OS/286, OS/386 - SET REAL PROCEDURE SIGNAL HANDLER
AH = E2h
???
Return: ???
SeeAlso: AH=E0h"OS/286",AH=E1h"OS/286",AH=E6h"OS/286"
----------21E2-------------------------------
INT 21 - DoubleDOS - SEND CHARACTER TO KEYBOARD BUFFER OF OTHER JOB
AH = E2h
AL = character
Return: AL = 00h successful
01h buffer full (128 characters)
SeeAlso: AH=E1h"DoubleDOS",AH=E3h"DoubleDOS",AH=E8h"DoubleDOS"
SeeAlso: AH=F2h"DoubleDOS"
----------21E2--SF00-------------------------
INT 21 - Novell NetWare - DIRECTORY SERVICES - SET DIRECTORY HANDLE
AH = E2h subfn 00h
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status (00h,98h,9Bh,9Ch) (see below)
Desc: set the target handle to reference the directory specified by the
source handle and the source path; both handles must refer to the
same file server
Notes: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX
the target handle is not changed if this function fails
SeeAlso: AH=E2h/SF=01h,AH=E2h/SF=12h,AH=E2h/SF=13h
Values for status:
00h successful
84h not permitted to create
8Ah not permitted to delete
8Bh not permitted to rename
8Ch not permitted to modify
98h nonexistent volume
9Bh invalid directory handle
9Ch invalid path
9Eh invalid filename
9Fh directory currently in use
A0h directory not empty
FCh no such bindery object
Format of request buffer:
Offset Size Description
00h WORD length of following data (max 103h)
02h BYTE 00h (subfunction "Set Directory Handle")
03h BYTE directory handle of target
04h BYTE directory handle of source
05h BYTE length of source directory path (01h-FFh)
06h N BYTEs source directory path
Format of reply buffer:
Offset Size Description
00h WORD (call) 0000h (no results returned)
----------21E2--SF01-------------------------
INT 21 - Novell NetWare - DIRECTORY SERVICES - GET DIRECTORY PATH
AH = E2h subfn 01h
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status (00h,9Bh) (see AH=E2h/SF=00h)
Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAlso: AH=E2h/SF=02h,AH=E2h/SF=03h,AH=E2h/SF=1Ah,AH=E9h
Format of request buffer:
Offset Size Description
00h WORD 0002h (length of following data)
02h BYTE 01h (subfunction "Get Directory Path")
03h BYTE directory handle
Format of reply buffer:
Offset Size Description
00h WORD (call) length of following data buffer
02h BYTE length of directory path (01h-FFh)
03h N BYTEs full directory path including volume
----------21E2--SF02-------------------------
INT 21 - Novell NetWare - DIRECTORY SERVICES - SCAN DIRECTORY INFORMATION
AH = E2h subfn 02h
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status (00h,98h,9Bh,9Ch) (see AH=E2h/SF=00h)
Desc: get information about the first or next subdirectory of the specified
directory
Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAlso: AH=E2h/SF=01h,AH=E2h/SF=03h,AH=E2h/SF=19h
Format of request buffer:
Offset Size Description
00h WORD length of following data (max 104h)
02h BYTE 02h (subfunction "Scan Directory Information")
03h BYTE directory handle
04h WORD subdirectory number (big-endian)
0000h for first call, returned subdir number + 1 on next call
06h BYTE length of directory path
07h N BYTEs directory path
Format of reply buffer:
Offset Size Description
00h WORD (call) 001Ch (length of following data buffer)
02h 16 BYTEs subdirectory name
12h DWORD date and time of creation (big-endian) (see below)
16h DWORD object ID of owner (bid-endian)
1Ah BYTE maximum directory rights (see AH=E2h/SF=03h)
1Bh BYTE unused
1Ch WORD subdirectory number (big-endian)
Bitmask of date and time:
bits 31-25: year-1980
bits 24-21: month
bits 20-16: day
bits 15-11: hour
bits 10-5: minute
bits 4-0: second
----------21E2--SF03-------------------------
INT 21 - Novell NetWare - DIRECTORY SERVICES - GET EFFECTIVE DIRECTORY RIGHTS
AH = E2h subfn 03h
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status (00h,98h,9Bh) (see AH=E2h/SF=00h)
Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAlso: AH=E2h/SF=01h,AH=E2h/SF=02h
Format of request buffer:
Offset Size Description
00h WORD length of following data (max 102h)
02h BYTE 03h (subfunction "Get Effective Directory Rights")
03h BYTE directory handle
04h BYTE length of directory path (00h-FFh)
05h N BYTEs directory path
Format of reply buffer:
Offset Size Description
00h WORD (call) 0001h (length of following data buffer)
02h BYTE effective directory rights (see below)
Bitmask of directory rights:
bit 0: reading allowed
bit 1: writing allowed
bit 2: opens allowed
bit 3: file creation allowed
bit 4: deletion allowed
bit 5: "parental" may create/delete subdirectories and
grant/revoke trustee rights
bit 6: directory search allowed
bit 7: file attributes may be changed
----------21E2--SF04-------------------------
INT 21 - Novell NetWare - DIRECTORY SERVICES - MODIFY MAXIMUM RIGHTS MASK
AH = E2h subfn 04h
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status (00h,8Ch,98h,9Ch) (see AH=E2h/SF=00h)
Notes: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAlso: AH=E2h/SF=03h,AH=E2h/SF=0Ah,AH=E2h/SF=0Dh
Format of request buffer:
Offset Size Description
00h WORD length of following data (max 104h)
02h BYTE 04h (subfunction "Modify Maximum Rights Mask")
03h BYTE directory handle
04h BYTE rights to grant (see AH=E2h/SF=03h)
05h BYTE rights to revoke (see AH=E2h/SF=03h)
06h BYTE length of directory path (00h-FFh)
07h N BYTEs directory path
Note: the rights specified at offset 05h are revoked first, and then the
rights specified at offset 04h are added to the resulting rights
mask
Format of reply buffer:
Offset Size Description
00h WORD (call) 0000h (no results returned)
----------21E2--SF05-------------------------
INT 21 - Novell NetWare - DIRECTORY SERVICES - GET VOLUME NUMBER
AH = E2h subfn 05h
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status (00h,98h) (see AH=E2h/SF=00h)
Notes: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAlso: AH=DAh,AH=E2h/SF=02h,AH=E2h/SF=05h,AH=E2h/SF=15h,AH=E3h/SF=E9h
Format of request buffer:
Offset Size Description
00h WORD length of following data (max 12h)
02h BYTE 05h (subfunction "Get Volume Number")
03h BYTE length of volume name (01h-10h)
04h N BYTEs volume name
Format of reply buffer:
Offset Size Description
00h WORD (call) 0001h (length of following results buffer)
02h BYTE volume number
----------21E2--SF06-------------------------
INT 21 - Novell NetWare - DIRECTORY SERVICES - GET VOLUME NAME
AH = E2h subfn 06h
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status (00h,98h) (see AH=E2h/SF=00h)
Notes: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAlso: AH=DAh,AH=E2h/SF=02h,AH=E2h/SF=05h,AH=E2h/SF=15h,AH=E2h/SF=1Ah
SeeAlso: AH=E3h/SF=E9h
Format of request buffer:
Offset Size Description
00h WORD 0002h (length of following data)
02h BYTE 06h (subfunction "Get Volume Name")
03h BYTE volume number
Format of reply buffer:
Offset Size Description
00h WORD (call) 0011h (length of following results buffer)
02h BYTE length of volume name
03h 16 BYTEs NUL-padded volume name
----------21E2--SF0A-------------------------
INT 21 - Novell NetWare - DIRECTORY SERVICES - CREATE DIRECTORY
AH = E2h subfn 0Ah
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status (00h,84h,98h,FCh) (see AH=E2h/SF=00h)
Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAlso: AH=39h,AH=E2h/SF=0Bh,AH=E2h/SF=0Fh
Format of request buffer:
Offset Size Description
00h WORD length of following data (max 103h)
02h BYTE 0Ah (subfunction "Create Directory")
03h BYTE directory handle
04h BYTE maximum directory rights (see AH=E2h/SF=01h)
05h BYTE length of directory path (00h-FFh)
06h N BYTEs directory path
Format of reply buffer:
Offset Size Description
00h WORD (call) 0000h (no data returned)
----------21E2--SF0B-------------------------
INT 21 - Novell NetWare - DIRECTORY SERVICES - DELETE DIRECTORY
AH = E2h subfn 0Bh
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status (00h,8Ah,98h,9Bh,9Ch,9Fh,A0h) (see AH=E2h/SF=00h)
Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAlso: AH=3Ah,AH=E2h/SF=0Ah,AH=E2h/SF=0Fh
Format of request buffer:
Offset Size Description
00h WORD length of following data (max 103h)
02h BYTE 0Bh (subfunction "Delete Directory")
03h BYTE directory handle
04h BYTE unused
05h BYTE length of directory path (00h-FFh)
06h N BYTEs directory path
Format of reply buffer:
Offset Size Description
00h WORD (call) 0000h (no data returned)
----------21E2--SF0C-------------------------
INT 21 - Novell NetWare - DIRECTORY SERVICES - SCAN DIRECTORY FOR TRUSTEES
AH = E2h subfn 0Ch
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status
00h successful
9Ch no more trustees
Note: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
SeeAlso: AH=E2h/SF=0Dh,AH=E2h/SF=0Eh,AH=E3h/SF=47h
Format of request buffer:
Offset Size Description
00h WORD length of following data (max 103h)
02h BYTE 0Ch (subfunction "Scan Directory For Trustees")
03h BYTE directory handle
04h BYTE sequence number
00h on first call, increment for each subsequent call
05h BYTE length of directory path (00h-FFh)
06h N BYTEs directory path
Format of reply buffer:
Offset Size Description
00h WORD (call) 0031h (length of following results buffer)
02h 16 BYTEs directory name
12h 4 BYTEs date and time of creation
16h DWORD object ID of owner (big-endian)
1Ah 5 DWORDs object IDs of Trustees 0 through 4 (big-endian)
00000000h = end of group
2Eh 5 BYTEs directory rights for Trustees 0 through 4 (see AH=E2h/SF=03h)
----------21E2--SF0D-------------------------
INT 21 - Novell NetWare - DIRECTORY SERVICES - ADD TRUSTEE TO DIRECTORY
AH = E2h subfn 0Dh
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status (00h,8Ch,FCh) (see AH=E2h/SF=00h)
Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAlso: AH=E2h/SF=0Ch,AH=E2h/SF=0Eh,AH=E3h/SF=47h
Format of request buffer:
Offset Size Description
00h WORD length of following data (max 107h)
02h BYTE 0Dh (subfunction "Add Trustee To Directory")
03h BYTE directory handle
04h DWORD object ID of trustee (big-endian)
08h BYTE trustee directory rights (see AH=E2h/SF=01h)
09h BYTE length of directory path (00h-FFh)
0Ah N BYTEs directory path
Format of reply buffer:
Offset Size Description
00h WORD (call) 0000h (no data returned)
----------21E2--SF0E-------------------------
INT 21 - Novell NetWare - DIRECTORY SERVICES - DELETE TRUSTEE FROM DIRECTORY
AH = E2h subfn 0Eh
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status (00h,98h,9Bh,9Ch) (see AH=E2h/SF=00h)
Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAlso: AH=E2h/SF=0Ch,AH=E2h/SF=0Dh
Format of request buffer:
Offset Size Description
00h WORD length of following data (max 107h)
02h BYTE 0Eh (subfunction "Delete Trustee From Directory")
03h BYTE directory handle
04h DWORD object ID of trustee (big-endian)
08h BYTE unused
09h BYTE length of directory path (00h-FFh)
0Ah N BYTEs directory path
Format of reply buffer:
Offset Size Description
00h WORD (call) 0000h (no data returned)
----------21E2--SF0F-------------------------
INT 21 - Novell NetWare - DIRECTORY SERVICES - RENAME DIRECTORY
AH = E2h subfn 0Fh
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status (00h,8Bh,9Bh,9Ch,9Eh) (see AH=E2h/SF=00h)
Notes: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX
directories SYS:LOGIN, SYS:MAIL, and SYS:PUBLIC must not be renamed
SeeAlso: AH=56h,AH=E2h/SF=0Ah,AH=E2h/SF=0Bh
Format of request buffer:
Offset Size Description
00h WORD length of following data (max 111h)
02h BYTE 0Fh (subfunction "Rename Directory")
03h BYTE directory handle
04h BYTE length of directory path (00h-FFh)
05h N BYTEs directory path
BYTE length of new directory name (01h-0Eh)
N BYTEs new directory name
Format of reply buffer:
Offset Size Description
00h WORD (call) 0000h (no data returned)
----------21E2--SF10-------------------------
INT 21 - Novell NetWare - FILE SERVICES - PURGE ERASED FILES
AH = E2h subfn 10h
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status
00h successful
C6h no console rights
Notes: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX
purges files marked for deletion on the file server by the calling
workstation
SeeAlso: AH=13h,AH=41h,AH=E2h/SF=11h,AH=E3h/SF=CEh,AX=F244h
Format of request buffer:
Offset Size Description
00h WORD 0001h (length of following data)
02h BYTE 10h (subfunction "Purge Erased Files")
Format of reply buffer:
Offset Size Description
00h WORD (call) 0000h (no results returned)
----------21E2--SF11-------------------------
INT 21 - Novell NetWare - FILE SERVICES - RESTORE ERASED FILE
AH = E2h subfn 11h
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status
00h successful
98h nonexistent volume
FFh no more erased files
Notes: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX
restores one file marked for deletion which has not yet been purged
SeeAlso: AH=13h,AH=41h,AH=E2h/SF=10h,AH=E3h/SF=CEh,AX=F244h
Format of request buffer:
Offset Size Description
00h WORD length of following data (max 13h)
02h BYTE 11h (subfunction "Restore Erased File")
03h BYTE directory handle or 00h
04h BYTE length of volume name
05h N BYTEs volume name (including colon)
Note: if both a directory handle and a volume name are specified, the volume
name overrides the handle
Format of reply buffer:
Offset Size Description
00h WORD (call) 001Eh (size of following results buffer)
02h 15 BYTEs ASCIZ name of erased file
11h 15 BYTEs ASCIZ name under which file was restored
----------21E2--SF12-------------------------
INT 21 - Novell NetWare - DIRECTORY SERVICES - ALLOC PERMANENT DIRECTORY HANDLE
AH = E2h subfn 12h
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status (00h,98h,9Ch) (see AH=E2h/SF=00h)
Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAlso: AH=E2h/SF=00h,AH=E2h/SF=13h,AH=E2h/SF=14h
Format of request buffer:
Offset Size Description
00h WORD length of following data (max 103h)
02h BYTE 12h (subfunction "Alloc Permanent Directory Handle")
03h BYTE directory handle
04h BYTE drive ('A'-'Z')
05h BYTE length of directory path
06h N BYTEs directory path
Format of reply buffer:
Offset Size Description
00h WORD (call) 0002h (size of following results buffer)
02h BYTE new directory handle
03h BYTE effective directory rights (see AH=E2h/SF=01h)
----------21E2--SF13-------------------------
INT 21 - Novell NetWare - DIRECTORY SERVICES - ALLOC TEMPORARY DIRECTORY HANDLE
AH = E2h subfn 13h
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see AH=E2h/SF=12h)
Return: AL = status (00h,98h,9Ch) (see AH=E2h/SF=00h)
Notes: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX
this call is the same as AH=E2h/SF=12h except that the directory handle
will be automatically deallocated when the calling application
executes an End of Job call (AH=D6h) or terminates
SeeAlso: AH=D6h,AH=E2h/SF=00h,AH=E2h/SF=12h,AH=E2h/SF=14h,AH=E2h/SF=16h
Format of request buffer:
Offset Size Description
00h WORD length of following data (max 103h)
02h BYTE 13h (subfunction "Alloc Temporary Directory Handle")
03h BYTE directory handle
04h BYTE drive ('A'-'Z')
05h BYTE length of directory path
06h N BYTEs directory path
----------21E2--SF14-------------------------
INT 21 - Novell NetWare - DIRECTORY SERVICES - DEALLOCATE DIRECTORY HANDLE
AH = E2h subfn 14h
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status (00h,9Bh) (see AH=E2h/SF=00h)
Notes: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAlso: AH=E2h/SF=12h,AH=E2h/SF=13h
Format of request buffer:
Offset Size Description
00h WORD 0002h (length of following data)
02h BYTE 14h (subfunction "Deallocate Directory Handle")
03h BYTE directory handle
Format of reply buffer:
Offset Size Description
00h WORD (call) 0000h (no returned data)
----------21E2--SF15-------------------------
INT 21 - Novell NetWare - DIRECTORY SERVICES - GET VOLUME INFO WITH HANDLE
AH = E2h subfn 15h
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status
00h successful
Notes: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAlso: AH=DAh,AH=E2h/SF=02h,AH=E2h/SF=06h,AH=E2h/SF=19h,AH=E3h/SF=E9h
Format of request buffer:
Offset Size Description
00h WORD 0002h (length of following data)
02h BYTE 15h (subfunction "Get Volume Info With Handle")
03h BYTE directory handle
Format of reply buffer:
Offset Size Description
00h WORD (call) 001Ch (length of following results buffer)
02h WORD sectors per block (big-endian)
04h WORD total blocks on volume (big-endian)
06h WORD blocks available on volume (big-endian)
08h WORD total directory slots (big-endian)
0Ah WORD directory slots available (big-endian)
0Ch 16 BYTEs NUL-padded volume name
1Ch WORD flag: volume removable if nonzero (big-endian)
----------21E2--SF16-------------------------
INT 21 u - Novell NetWare - DIRECTORY SERVICES - ALLOC SPECIAL TEMP DIR HANDLE
AH = E2h subfn 16h
DS:SI -> request buffer (see below)
ES:DI -> reply buffer
Return: AL = status
Note: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX,
but is not described in _NetWare_System_Calls--DOS_
SeeAlso: AH=E2h/SF=13h,AH=E2h/SF=14h
Format of request buffer:
Offset Size Description
00h WORD length of following data
02h BYTE 16h (subfunction "Allocate Special Temporary Directory Handle")
???
----------21E2--SF17-------------------------
INT 21 - Novell NetWare - DIRECTORY SERVICES - SAVE DIRECTORY HANDLE
AH = E2h subfn 17h
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status
00h successful
else network error code
Note: this function is supported by Advanced NetWare 2.0+ and Alloy NTNX
SeeAlso: AH=E2h/SF=12h,AH=E2h/SF=17h
Format of request buffer:
Offset Size Description
00h WORD 0002h (length of following data)
02h BYTE 18h (subfunction "Restore Directory Handle")
03h BYTE directory handle
Format of reply buffer:
Offset Size Description
00h WORD (call) 0010h (length of following results buffer)
02h 16 BYTEs save buffer
----------21E2--SF18-------------------------
INT 21 - Novell NetWare - DIRECTORY SERVICES - RESTORE DIRECTORY HANDLE
AH = E2h subfn 18h
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status
00h successful
else network error code
Desc: restore a previously saved directory handle to reproduce an executing
environment, possibly on a different execution site
Note: this function is supported by Advanced NetWare 2.0+ and Alloy NTNX
SeeAlso: AH=E2h/SF=12h,AH=E2h/SF=17h
Format of request buffer:
Offset Size Description
00h WORD 0011h (length of following data)
02h BYTE 18h (subfunction "Restore Directory Handle")
03h 16 BYTEs save buffer
Format of reply buffer:
Offset Size Description
00h WORD (call) 0002h (length of following results buffer)
02h BYTE new directory handle
03h BYTE effective rights (see AH=E2h/SF=03h)
----------21E2--SF19-------------------------
INT 21 - Novell NetWare - DIRECTORY SERVICES - SET DIRECTORY INFORMATION
AH = E2h subfn 19h
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status (00h,9Bh,9Ch) (see AH=E2h/SF=00h)
Note: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
SeeAlso: AH=E2h/SF=02h,AH=E2h/SF=0Fh
Format of request buffer:
Offset Size Description
00h WORD length of following data (max 10Bh)
02h BYTE 19h (subfunction "Set Directory Information")
03h BYTE directory handle
04h DWORD date and time of creation (big-endian)
08h DWORD object ID of owner (big-endian)
0Ch BYTE maximum directory rightes (see AH=E2h/SF=03h)
0Dh BYTE length of directory path
0Eh N BYTEs directory path
Format of reply buffer:
Offset Size Description
00h WORD (call) 0000h (no results returned)
----------21E2--SF1A-------------------------
INT 21 - Novell NetWare - FILE SERVER - GET PATH FROM DIRECTORY ENTRY
AH = E2h subfn 1Ah
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status
00h successful
Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAlso: AH=E2h/SF=01h,AH=E2h/SF=06h,AH=E3h/SF=D7h
Format of request buffer:
Offset Size Description
00h WORD 0004h (length of following data)
02h BYTE 1Ah (subfunction "Get Path From Directory Entry")
03h BYTE volume number (00h-1Fh)
04h WORD directory entry number (big-endian)
Format of reply buffer:
Offset Size Description
00h WORD (call) size of following results record (max 200h)
02h 256 BYTEs path
----------21E3-------------------------------
INT 21 - OS/286, OS/386 - ISSUE REAL INTERRUPT
AH = E3h
AL = interrupt number
???
Return: ???
Note: protected mode only???
SeeAlso: AH=E1h"OS/286",INT 31/AX=0300h
----------21E3-------------------------------
INT 21 - DoubleDOS - ADD CHARACTER TO KEYBOARD BUFFER OF CURRENT JOB
AH = E3h
AL = character
Return: AL = 00h successful
01h buffer full (128 characters)
SeeAlso: AH=E1h"DoubleDOS",AH=E2h"DoubleDOS",AH=E8h"DoubleDOS"
SeeAlso: AH=F3h"DoubleDOS"
----------21E3-------------------------------
INT 21 - Novell NetWare - CONNECTION CONTROL
AH = E3h
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status
00h successful
else error code
Note: supported by NetWare 4.0+, Advanced NetWare 1.0+, and Alloy NTNX
SeeAlso: AH=E3h/SF=0Ah,AH=E3h/SF=32h,AH=E3h/SF=64h,AH=E3h/SF=C8h
Format of request buffer:
Offset Size Description
00h WORD length of following data
02h BYTE subfunction number
00h login
01h change password
02h map user to station set
03h map object to number
04h map number to object
05h get station's logged information
06h get station's root mask (obsolete)
07h map group name to number
08h map number to group name
09h get memberset M of group G
var depends on subfunction
Notes: the above subfunctions are not described in _NetWare_System_Calls--DOS_
see separate entries below for other subfunctions
Format of reply buffer:
Offset Size Description
00h WORD (call) length of following buffer space for results
var depends on subfunction
Format of object property:
Offset Size Description
00h 1-16 BYTEs property name
N BYTE flags
bit 0: property is dynamic
bit 1: property is a set rather than an item
N+1 BYTE security levels (see below)
???
Names of well-known properties:
ACCOUNT_BALANCE
ACCOUNT_SERVERS
GROUP_MEMBERS
GROUPS_I'M_IN
IDENTIFICATION user's name
LOGIN_CONTROL
NET_ADDRESS
OPERATORS
PASSWORD
SECURITY_EQUALS
Values for security levels:
00h "anyone" everyone may access
01h "logged" only logged-in clients may access
02h "object" only clients logged-in with object's name, type, and password
03h "supervisor" only clients logged-in with supervisor privileges
04h "NetWare" only NetWare may access
Note: the above values are stored in a nybble; the high half-byte is write
access and the low half-byte is read access
Values for object type:
0000h unknown
0001h user
0002h user group
0003h print queue
0004h file server
0005h job server
0006h gateway
0007h print server
0008h archive queue
0009h archive server
000Ah job queue
000Bh administration
0026h remote bridge server
0047h advertising print server
0048h-8000h reserved
FFFFh wild (used only for finding objects)
----------21E3--SF0A-------------------------
INT 21 - Novell NetWare - CONNECTION SERVICES - ENTER LOGIN AREA
AH = E3h subfn 0Ah
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status
00h successful
Desc: change the login directory for the calling workstation
Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAlso: AH=D7h,AH=E3h/SF=14h
Format of request buffer:
Offset Size Description
00h WORD length of following data (max 102h)
02h BYTE 0Ah (subfunction "Enter Login Area")
03h BYTE number of local drives
04h BYTE length of subdirectory name (00h-FFh)
05h N BYTEs name of subdirectory under SYS:LOGIN where to find the login
utility
Format of reply buffer:
Offset Size Description
00h WORD (call) 0000h (no data returned)
----------21E3--SF0D-------------------------
INT 21 - Novell NetWare - MESSAGE SERVICES - LOG NETWORK MESSAGE
AH = E3h subfn 0Dh
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status
00h successful
Desc: append a line to the default file server's NET$LOG.MSG file
Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAlso: AH=E1h/SF=09h
Format of request buffer:
Offset Size Description
00h WORD length of following data (max 52h)
02h BYTE 0Dh (subfunction "Log Network Message")
03h BYTE length of message (01h-50h)
04h N BYTEs message (no control characters or characters > 7Eh)
----------21E3--SF0E-------------------------
INT 21 - Novell NetWare - FILE SERVER - GET DISK UTILIZATION
AH = E3h subfn 0Eh
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status
00h successful
98h nonexistent volume
F2h not permitted to read object
Notes: this function is supported by Advanced NetWare 2.1+
the caller must have bindery object read privileges
SeeAlso: AH=E3h/SF=11h,AH=E3h/SF=D6h,AH=E3h/SF=D9h,AH=E3h/SF=E6h,AH=E3h/SF=E9h
Format of request buffer:
Offset Size Description
00h WORD 0005h (length of following data)
02h BYTE 0Eh (subfunction "Get Disk Utilization")
03h BYTE volume number (00h-1Fh)
04h DWORD object ID (big-endian)
Format of reply buffer:
Offset Size Description
00h WORD (call) 000Bh (size of following results buffer)
02h BYTE volume number (00h-1Fh)
03h DWORD object ID (big-endian)
07h WORD directories used by object (big-endian)
09h WORD files created by object (big-endian)
0Bh WORD disk blocks used by object-created files (big-endian)
----------21E3--SF0F-------------------------
INT 21 - Novell NetWare - FILE SERVICES - SCAN FILE INFORMATION
AH = E3h subfn 0Fh
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status
00h successful
89h not permitted to search directory
FFh no more matching files
Note: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
SeeAlso: AH=B6h,AH=E3h/SF=10h
Format of request buffer:
Offset Size Description
00h WORD length of following data (max 105h)
02h BYTE 0Fh (subfunction "Scan File Information")
03h WORD sequence number (big-endian)
FFFFh on first call
05h BYTE directory handle or 00h
06h BYTE search attributes (see AX=4301h)
07h BYTE length of filespec
08h N BYTEs ASCIZ uppercase filespec
Format of reply buffer:
Offset Size Description
00h WORD (call) 005Eh (size of following results buffer)
02h WORD next sequence number (place in request buffer for next call)
04h 15 BYTEs ASCIZ filename
13h BYTE file attributes (see AX=4301h for format)
14h BYTE extended file attributes (see AH=B6h for format)
15h DWORD file size in bytes (big-endian)
19h WORD file's creation date (big-endian) (see AX=5700h for format)
1Bh WORD date of last access (big-endian) (see AX=5700h for format)
1Dh DWORD date and time of last update (big-endian) (see AH=E2h/SF=02h)
21h DWORD object ID of owner (big-endian)
25h DWORD date and time last archived (big-endian) (see AH=E2h/SF=02h)
29h 55 BYTEs reserved
----------21E3--SF10-------------------------
INT 21 - Novell NetWare - FILE SERVICES - SET FILE INFORMATION
AH = E3h subfn 10h
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status
00h successful
Note: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
the caller must have modify privileges on the directory containing the
file
SeeAlso: AH=B6h,AH=E3h/SF=0Fh
Format of request buffer:
Offset Size Description
00h WORD length of following data (max 151h)
02h BYTE 10h (subfunction "Set File Information")
03h BYTE file attributes (see AX=4301h for format)
04h BYTE extended file attributes (see AH=B6h for format)
05h 4 BYTEs reserved
09h WORD file's creation date (big-endian) (see AX=5700h for format)
0Bh WORD date of last access (big-endian) (see AX=5700h for format)
0Dh DWORD date and time of last update (big-endian) (see AH=E2h/SF=02h)
11h DWORD object ID of owner (big-endian)
15h DWORD date and time last archived (big-endian) (see AH=E2h/SF=02h)
19h 56 BYTEs reserved
51h BYTE directory handle or 00h
52h BYTE search attributes (see AX=4301h for format)
53h BYTE length of filename
54h N BYTEs filename
Format of reply buffer:
Offset Size Description
00h WORD (call) 0000h (no results returned)
----------21E3--SF11-------------------------
INT 21 - Novell NetWare - FILE SERVER - GET FILE SERVER INFORMATION
AH = E3h subfn 11h
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status
00h successful
Note: this function is supported by Advanced NetWare 2.1+
SeeAlso: AH=E3h/SF=0Eh,AH=E3h/SF=CDh,AH=E3h/SF=D3h,AH=E3h/SF=E7h,AH=E7h
Format of request buffer:
Offset Size Description
00h WORD 0001h (length of following data)
02h BYTE 11h (subfunction "Get File Server Information")
Format of reply buffer:
Offset Size Description
00h WORD (call) 0080h (size of following results buffer)
02h 48 BYTEs server's name
32h BYTE NetWare version
33h BYTE NetWare subversion (0-99)
34h WORD number of connections supported (big-endian)
36h WORD number of connections in use (big-endian)
38h WORD maximum connected volumes (big-endian)
---Advanced NetWare 2.1+ ---
3Ah BYTE operating system revision number
3Bh BYTE fault tolerance (SFT) level
3Ch BYTE TTS level
3Dh WORD maximum simultaneously-used connections (big-endian)
3Fh BYTE accounting version
40h BYTE VAP version
41h BYTE queueing version
42h BYTE print server version
43h BYTE virtual console version
44h BYTE security restrictions level
45h BYTE internetwork bridge version
46h 60 BYTEs reserved
----------21E3--SF13-------------------------
INT 21 - Novell NetWare - CONNECTION SERVICES - GET INTERNET ADDRESS
AH = E3h subfn 13h
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status
00h successful
Note: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
SeeAlso: AH=DCh"NetWare",AH=E3h/SF=16h,AH=EEh"NetWare"
Format of request buffer:
Offset Size Description
00h WORD 0002h (length of following data)
02h BYTE 13h (subfunction "Get Internet Address")
03h BYTE logical connection number (01h-64h)
Format of reply buffer:
Offset Size Description
00h WORD (call) 000Ch (length of following results buffer)
02h 4 BYTEs network number
06h 6 BYTEs physical node address
0Ch 2 BYTEs socket number
----------21E3--SF14-------------------------
INT 21 - Novell NetWare - CONNECTION SERVICES - LOGIN TO FILE SERVER
AH = E3h subfn 14h
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status
00h successful
Desc: this function retrieves a list indicating the connection numbers under
which a bindery object is logged into the default file server
Note: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
SeeAlso: AH=D7h"NetWare",AH=F1h"NetWare"
Format of request buffer:
Offset Size Description
00h WORD length of following data (max B3h)
02h BYTE 14h (subfunction "Login To File Server")
03h WORD type of object (big-endian)
05h BYTE length of object's name (01h-2Fh)
06h N BYTEs object's name
BYTE length of password
N BYTEs password
Format of reply buffer:
Offset Size Description
00h WORD (call) 0000h (no data returned)
----------21E3--SF15-------------------------
INT 21 - Novell NetWare - CONNECTION SERVICES - GET OBJECT CONNECTION NUMBERS
AH = E3h subfn 15h
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status
00h successful
Desc: this function retrieves a list indicating the connection numbers under
which a bindery object is logged into the default file server
Note: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
SeeAlso: AH=DCh"NetWare",AH=E3h/SF=16h
Format of request buffer:
Offset Size Description
00h WORD length of following data (max 33h)
02h BYTE 15h (subfunction "Get Object Connection Numbers")
03h WORD type of object (big-endian)
05h BYTE length of object's name (01h-2Fh)
06h N BYTEs object's name
Format of reply buffer:
Offset Size Description
00h WORD (call) length of following results buffer (max 65h)
02h BYTE number of connections
03h N BYTEs connection list
----------21E3--SF16-------------------------
INT 21 - Novell NetWare - CONNECTION SERVICES - GET CONNECTION INFORMATION
AH = E3h subfn 16h
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status
00h successful
Note: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
SeeAlso: AH=D7h,AH=DCh"NetWare",AH=E3h/SF=14h
Format of request buffer:
Offset Size Description
00h WORD 0002h (length of following data)
02h BYTE 16h (subfunction "Get Connection Information")
03h BYTE logical connection number (01h-64h)
Format of reply buffer:
Offset Size Description
00h WORD (call) 003Dh (length of following results buffer)
02h DWORD object ID for object logged in on the connection (big-endian)
00000000h if no object logged in
06h WORD type of object (big-endian)
08h 48 BYTEs name of object
38h 7 BYTEs login time (see below)
Format of login time:
Offset Size Description
00h BYTE year (80-99 = 1980-1999, 00-79 = 2000-2079)
01h BYTE month (1-12)
02h BYTE day (1-31)
03h BYTE hour (0-23)
04h BYTE minute (0-59)
05h BYTE second (0-59)
06h BYTE day of week (0 = Sunday)
----------21E3--SF32-------------------------
INT 21 - Novell NetWare - BINDERY SERVICES - CREATE BINDERY OBJECT
AH = E3h subfn 32h
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status
00h successful
96h server out of memory
EEh object already exists
EFh invalid name
F1h invalid bindery security level
F5h not permitted to create objects
FEh server bindery locked
FFh bindery failure
Note: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
SeeAlso: AH=E3h/SF=33h,AH=E3h/SF=34h,AH=E3h/SF=38h,AH=E3h/SF=39h
Format of request buffer:
Offset Size Description
00h WORD length of following data (max 35h)
02h BYTE 32h (subfunction "Create Bindery Object")
03h BYTE object flag
00h static
01h dynamic
04h BYTE object security levels
05h WORD type of object (big-endian)
07h BYTE length of object's name
08h N BYTEs object's name
Format of reply buffer:
Offset Size Description
00h WORD 0000h (no data returned)
----------21E3--SF33-------------------------
INT 21 - Novell NetWare - BINDERY SERVICES - DELETE BINDERY OBJECT
AH = E3h subfn 33h
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status
00h successful
96h server out of memory
EFh invalid name
F0h wildcard not allowed
F4h not permitted to delete objects
FCh no such object
FEh server bindery locked
FFh bindery failure
Note: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
SeeAlso: AH=E3h/SF=32h,AH=E3h/SF=34h
Format of request buffer:
Offset Size Description
00h WORD length of following data (max 33h)
02h BYTE 33h (subfunction "Delete Bindery Object")
03h WORD type of object (big-endian)
05h BYTE length of object's name (01h-2Fh)
06h N BYTEs object's name
Format of reply buffer:
Offset Size Description
00h WORD (call) 0000h (no data returned)
----------21E3--SF34-------------------------
INT 21 - Novell NetWare - BINDERY SERVICES - RENAME BINDERY OBJECT
AH = E3h subfn 34h
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status
00h successful
96h server out of memory
EFh invalid name
F0h wildcard not allowed
F3h not permitted to rename object
FCh no such object
FEh server bindery locked
FFh bindery failure
Note: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
SeeAlso: AH=E3h/SF=32h,AH=E3h/SF=33h
Format of request buffer:
Offset Size Description
00h WORD length of following data (max 63h)
02h BYTE 34h (subfunction "Rename Bindery Object")
03h WORD type of object (big-endian)
05h BYTE length of object's name (01h-2Fh)
06h N BYTEs object's name
BYTE length of new name (01h-2Fh)
N BYTEs new name
Format of reply buffer:
Offset Size Description
00h WORD (call) 0000h (no data returned)
----------21E3--SF35-------------------------
INT 21 - Novell NetWare - BINDERY SERVICES - GET BINDERY OBJECT ID
AH = E3h subfn 35h
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status
00h successful
96h server out of memory
FCh no such object
FEh server bindery locked
FFh bindery failure
Notes: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
the requesting workstation must be logged into the file server with
read access to the bindery object
SeeAlso: AH=E3h/SF=36h,AH=E3h/SF=44h
Format of request buffer:
Offset Size Description
00h WORD length of following data (max 33h)
02h BYTE 35h (subfunction "Get Bindery Object ID")
03h WORD type of object (big-endian)
05h BYTE length of object's name
06h N BYTEs object's name
Format of reply buffer:
Offset Size Description
00h WORD (call) 0036h (length of following buffer space)
02h DWORD object ID (big-endian)
06h WORD type of object (big-endian)
08h 48 BYTEs object name
----------21E3--SF36-------------------------
INT 21 - Novell NetWare - BINDERY SERVICES - GET BINDERY OBJECT NAME
AH = E3h subfn 36h
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status
00h successful
96h server out of memory
EFh invalid name
F0h wildcard not allowed
FCh no such object
FEh server bindery locked
FFh bindery failure
Notes: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
the requesting workstation must be logged into the file server with
read access to the bindery object
SeeAlso: AH=E3h/SF=35h,AH=E3h/SF=44h
Format of request buffer:
Offset Size Description
00h WORD 0005h (length of following data)
02h BYTE 36h (subfunction "Get Bindery Object Name")
03h DWORD object ID (big-endian)
Format of reply buffer:
Offset Size Description
00h WORD (call) 0036h (length of following buffer space)
02h DWORD object ID (big-endian)
06h WORD type of object (big-endian)
08h 48 BYTEs object name
----------21E3--SF37-------------------------
INT 21 - Novell NetWare - BINDERY SERVICES - SCAN BINDERY OBJECT
AH = E3h subfn 37h
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status
00h successful
96h server out of memory
EFh invalid name
FCh no such object
FEh server bindery locked
FFh bindery failure
Notes: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
the requesting workstation must be logged into the file server with
read access to the bindery object
SeeAlso: AH=E3h/SF=32h,AH=E3h/SF=33h,AH=E3h/SF=38h,AH=E3h/SF=3Ch
Format of request buffer:
Offset Size Description
00h WORD length of following data (max 37h)
02h BYTE 37h (subfunction "Scan Bindery Object")
03h DWORD last object ID (big-endian)
07h WORD type of object (big-endian)
09h BYTE length of object's name
0Ah N BYTEs object's name
Format of reply buffer:
Offset Size Description
00h WORD (call) 0039h (length of following buffer space)
02h DWORD object ID (big-endian)
FFFFFFFFh for first call
06h WORD type of object (big-endian)
08h BYTE length of object's name (01h-2Fh)
09h N BYTEs object name
BYTE object flag (00h static, 01h dynamic)
BYTE object's security levels
BYTE object properties flag (00h no, FFh yes)
----------21E3--SF38-------------------------
INT 21 - Novell NetWare - BINDERY SERVICES - CHANGE BINDERY OBJECT SECURITY
AH = E3h subfn 38h
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status
00h successful
96h server out of memory
F0h wildcard not allowed
F1h invalid bindery security level
FBh no such property
FCh no such object
FEh server bindery locked
FFh bindery failure
Note: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
SeeAlso: AH=E3h/SF=32h,AH=E3h/SF=3Bh
Format of request buffer:
Offset Size Description
00h WORD length of following data (max 34h)
02h BYTE 38h (subfunction "Change Bindery Object Security")
03h BYTE new security levels
04h WORD type of object (big-endian)
06h BYTE length of object's name (01h-2Fh)
07h N BYTEs object name
Format of reply buffer:
Offset Size Description
00h WORD (call) 0000h (no data returned)
----------21E3--SF39-------------------------
INT 21 - Novell NetWare - BINDERY SERVICES - CREATE PROPERTY
AH = E3h subfn 39h
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status
00h successful
96h server out of memory
EDh property already exists
EFh invalid name
F0h wildcard not allowed
F1h invalid bindery security level
F7h not permitted to create properties
FCh no such object
FEh server bindery locked
FFh bindery failure
Note: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
SeeAlso: AH=E3h/SF=32h,AH=E3h/SF=3Bh
Format of request buffer:
Offset Size Description
00h WORD length of following data (max 45h)
02h BYTE 39h (subfunction "Create Property")
03h WORD type of object (big-endian)
05h BYTE length of object's name (01h-2Fh)
06h N BYTEs object's name
BYTE property flags
BYTE property security levels
BYTE length of property's name (01h-0Fh)
N BYTEs property's name
Format of reply buffer:
Offset Size Description
00h WORD (call) 0000h (no data returned)
----------21E3--SF3A-------------------------
INT 21 - Novell NetWare - BINDERY SERVICES - DELETE PROPERTY
AH = E3h subfn 3Ah
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status
00h successful
96h server out of memory
F0h wildcard not allowed
F1h invalid bindery security level
F6h not permitted to delete properties
FBh no such property
FCh no such object
FEh server bindery locked
FFh bindery failure
Note: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
SeeAlso: AH=E3h/SF=32h,AH=E3h/SF=39h
Format of request buffer:
Offset Size Description
00h WORD length of following data (max 43h)
02h BYTE 3Ah (subfunction "Delete Property")
03h WORD type of object (big-endian)
05h BYTE length of object's name (01h-2Fh)
06h N BYTEs object's name
BYTE length of property's name (01h-0Fh)
N BYTEs property's name
Format of reply buffer:
Offset Size Description
00h WORD (call) 0000h (no data returned)
----------21E3--SF3B-------------------------
INT 21 - Novell NetWare - BINDERY SERVICES - CHANGE PROPERTY SECURITY
AH = E3h subfn 3Bh
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status
00h successful
96h server out of memory
F0h wildcard not allowed
F1h invalid bindery security level
FBh no such property
FCh no such object
FEh server bindery locked
FFh bindery failure
Note: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
SeeAlso: AH=E3h/SF=38h
Format of request buffer:
Offset Size Description
00h WORD length of following data (max 44h)
02h BYTE 3Bh (subfunction "Change Property Security")
03h WORD type of object (big-endian)
05h BYTE length of object's name (01h-2Fh)
06h N BYTEs object name
BYTE new property security levels
BYTE length of property's name
N BYTEs property name
Format of reply buffer:
Offset Size Description
00h WORD (call) 0000h (no data returned)
----------21E3--SF3C-------------------------
INT 21 - Novell NetWare - BINDERY SERVICES - SCAN PROPERTY
AH = E3h subfn 3Ch
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status
00h successful
96h server out of memory
F0h wildcard not allowed
F1h invalid bindery security level
FBh no such property
FCh no such object
FEh server bindery locked
FFh bindery failure
Note: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
SeeAlso: AH=E3h/SF=37h,AH=E3h/SF=3Bh
Format of request buffer:
Offset Size Description
00h WORD length of following data (max 47h)
02h BYTE 3Ch (subfunction "Scan Property")
03h WORD type of object (big-endian)
05h BYTE length of object's name (01h-2Fh)
06h N BYTEs object name
DWORD sequence number (big-endian)
FFFFFFFFh for first call
BYTE length of property's name (01h-0Fh)
N BYTEs property's name
Format of reply buffer:
Offset Size Description
00h WORD (call) 0018h (length of following results buffer)
02h 16 BYTEs property name
12h BYTE property flags
13h BYTE property security levels
14h DWORD sequence number (big-endian)
18h BYTE property value flag (00h no, FFh yes)
19h BYTE more properties (00h no, FFh yes)
----------21E3--SF3D-------------------------
INT 21 - Novell NetWare - BINDERY SERVICES - READ PROPERTY VALUE
AH = E3h subfn 3Dh
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status
00h successful
96h server out of memory
ECh no such segment
F0h wildcard not allowed
F1h invalid bindery security level
F9h not permitted to read property
FBh no such property
FCh no such object
FEh server bindery locked
FFh bindery failure
Desc: retrieve one 128-byte segment of the specified property's value
Note: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
SeeAlso: AH=E3h/SF=39h,AH=E3h/SF=3Ch,AH=E3h/SF=3Eh
Format of request buffer:
Offset Size Description
00h WORD length of following data (max 44h)
02h BYTE 3Dh (subfunction "Read Property Value")
03h WORD type of object (big-endian)
05h BYTE length of object's name (01h-2Fh)
06h N BYTEs object name
BYTE segment number (01h on first call, increment until done)
BYTE length of property's name (01h-0Fh)
N BYTEs property name
Format of reply buffer:
Offset Size Description
00h WORD (call) 0082h (length of following results buffer)
02h 128 BYTEs property's value
82h BYTE more segments (00h no, FFh yes)
83h BYTE property's flags
----------21E3--SF3E-------------------------
INT 21 - Novell NetWare - BINDERY SERVICES - WRITE PROPERTY VALUE
AH = E3h subfn 3Eh
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status
00h successful
96h server out of memory
E8h not item property
ECh no such segment
F0h wildcard not allowed
F1h invalid bindery security level
F8h not permitted to write property
FBh no such property
FCh no such object
FEh server bindery locked
FFh bindery failure
Note: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
SeeAlso: AH=E3h/SF=39h,AH=E3h/SF=3Ch,AH=E3h/SF=3Eh
Format of request buffer:
Offset Size Description
00h WORD length of following data (max C5h)
02h BYTE 3Eh (subfunction "Write Property Value")
03h WORD type of object (big-endian)
05h BYTE length of object's name (01h-2Fh)
06h N BYTEs object name
BYTE segment number (01h on first call, increment until done)
BYTE erase remaining segments (00h no, FFh yes)
BYTE length of property's name (01h-0Fh)
N BYTEs property name
128 BYTEs property value segment
Format of reply buffer:
Offset Size Description
00h WORD (call) 0000h (no data returned)
----------21E3--SF3F-------------------------
INT 21 - Novell NetWare - BINDERY SERVICES - VERIFY BINDERY OBJECT PASSWORD
AH = E3h subfn 3Fh
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status
00h successful
96h server out of memory
F0h wildcard not allowed
FBh no such property
FCh no such object
FEh server bindery locked
FFh bindery failure: no such object, bad password
Note: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
SeeAlso: AH=E3h/SF=40h
Format of request buffer:
Offset Size Description
00h WORD length of following data (max 133h)
02h BYTE 3Fh (subfunction "Verify Bindery Object Password")
03h WORD type of object (big-endian)
05h BYTE length of object's name (01h-2Fh)
06h N BYTEs object name
BYTE length of password (00h-7Fh)
N BYTEs password
Format of reply buffer:
Offset Size Description
00h WORD (call) 0000h (no data returned)
----------21E3--SF40-------------------------
INT 21 - Novell NetWare - BINDERY SERVICES - CHANGE BINDERY OBJECT PASSWORD
AH = E3h subfn 40h
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status
00h successful
96h server out of memory
F0h wildcard not allowed
FBh no such property
FCh no such object
FEh server bindery locked
FFh bindery failure: no such object, no password for object, or
invalid old password
Note: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
SeeAlso: AH=E3h/SF=3Fh,AH=E3h/SF=41h
Format of request buffer:
Offset Size Description
00h WORD length of following data (max 133h)
02h BYTE 40h (subfunction "Change Bindery Object Password")
03h WORD type of object (big-endian)
05h BYTE length of object's name (01h-2Fh)
06h N BYTEs object name
BYTE length of old password (00h-7Fh)
N BYTEs old password
BYTE length of new password (00h-7Fh)
N BYTEs new password
Format of reply buffer:
Offset Size Description
00h WORD (call) 0000h (no data returned)
----------21E3--SF41-------------------------
INT 21 - Novell NetWare - BINDERY SERVICES - ADD BINDERY OBJECT TO SET
AH = E3h subfn 41h
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status
00h successful
96h server out of memory
E9h member already exists
EBh not a group property
F0h wildcard not allowed
F8h can't write property
FBh no such property
FCh no such object
FEh server bindery locked
FFh bindery failure
Desc: add the specified object to a set property
Note: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
SeeAlso: AH=E3h/SF=40h,AH=E3h/SF=42h,AH=E3h/SF=43h
Format of request buffer:
Offset Size Description
00h WORD length of following data (max 75h)
02h BYTE 41h (subfunction "Add Bindery Object to Set")
03h WORD type of object (big-endian)
05h BYTE length of object's name
06h N BYTEs object name
BYTE length of property name (01h-0Fh)
N BYTEs property name
WORD type of member object (big-endian)
BYTE length of member object's name
N BYTEs member object's name
Format of reply buffer:
Offset Size Description
00h WORD (call) 0000h (no data returned)
----------21E3--SF42-------------------------
INT 21 - Novell NetWare - BINDERY SERVICES - DELETE BINDERY OBJECT FROM SET
AH = E3h subfn 42h
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status
00h successful
96h server out of memory
EAh member does not exist
EBh not a group property
F0h wildcard not allowed
F8h can't write property
FBh no such property
FCh no such object
FEh server bindery locked
FFh bindery failure
Desc: delete the specified object from a set property
Note: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
SeeAlso: AH=E3h/SF=40h,AH=E3h/SF=42h,AH=E3h/SF=43h
Format of request buffer:
Offset Size Description
00h WORD length of following data (max 75h)
02h BYTE 42h (subfunction "Delete Bindery Object from Set")
03h WORD type of object (big-endian)
05h BYTE length of object's name
06h N BYTEs object name
BYTE length of property name (01h-0Fh)
N BYTEs property name
WORD type of member object (big-endian)
BYTE length of member object's name
N BYTEs member object's name
Format of reply buffer:
Offset Size Description
00h WORD (call) 0000h (no data returned)
----------21E3--SF43-------------------------
INT 21 - Novell NetWare - BINDERY SERVICES - IS BINDERY OBJECT IN SET
AH = E3h subfn 43h
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status
00h successful
96h server out of memory
EAh member does not exist
EBh not a group property
F0h wildcard not allowed
F9h not permitted to read property
FBh no such property
FCh no such object
FEh server bindery locked
FFh bindery failure
Notes: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
the caller must have read access to the property
SeeAlso: AH=E3h/SF=41h,AH=E3h/SF=42h
Format of request buffer:
Offset Size Description
00h WORD length of following data (max 75h)
02h BYTE 43h (subfunction "Is Bindery Object In Set")
03h WORD type of object (big-endian)
05h BYTE length of object's name
06h N BYTEs object's name
BYTE length of property's name
N BYTEs property's name
WORD type of member object (big-endian)
BYTE length of member object's name
N BYTEs member object's name
Format of reply buffer:
Offset Size Description
00h WORD (call) 0000h (no data returned)
----------21E3--SF44-------------------------
INT 21 - Novell NetWare - BINDERY SERVICES - CLOSE BINDERY
AH = E3h subfn 44h
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status
00h successful
Note: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
SeeAlso: AH=E3h/SF=45h
Format of request buffer:
Offset Size Description
00h WORD 0001h (length of following data)
02h BYTE 44h (subfunction "Close Bindery")
Format of reply buffer:
Offset Size Description
00h WORD (call) 0000h (no data returned)
----------21E3--SF45-------------------------
INT 21 - Novell NetWare - BINDERY SERVICES - OPEN BINDERY
AH = E3h subfn 45h
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status
00h successful
Notes: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
the bindery may only be opened by the supervisor or an object with
equivalent privileges
SeeAlso: AH=E3h/SF=44h
Format of request buffer:
Offset Size Description
00h WORD 0001h (length of following data)
02h BYTE 45h (subfunction "Open Bindery")
Format of reply buffer:
Offset Size Description
00h WORD (call) 0000h (no data returned)
----------21E3--SF46-------------------------
INT 21 - Novell NetWare - BINDERY SERVICES - GET BINDERY ACCESS LEVEL
AH = E3h subfn 46h
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status
00h successful
Note: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
Format of request buffer:
Offset Size Description
00h WORD 0001h (length of following data)
02h BYTE 46h (subfunction "Get Bindery Access Level")
Format of reply buffer:
Offset Size Description
00h WORD 0005h (length of following buffer)
02h BYTE security levels
03h DWORD object ID (big-endian)
----------21E3--SF47-------------------------
INT 21 - Novell NetWare - DIRECTORY SERVICES - SCAN BINDERY OBJ TRUSTEE PATHS
AH = E3h subfn 47h
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status
00h successful
96h server out of memory
F0h wildcard not allowed
F1h invalid bindery security level
FCh no such object
FEh server bindery locked
FFh bindery failure
Desc: iterate through the directories to which an object is a trustee
Note: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
SeeAlso: AH=E2h/SF=0Ch,AH=E2h/SF=0Dh,AH=E2h/SF=0Eh
Format of request buffer:
Offset Size Description
00h WORD 0008h (length of following data)
02h BYTE 47h (subfunction "Scan Bindery Object Trustee Paths")
03h BYTE volume number (00h-1Fh)
04h WORD last sequence number (big-endian)
00h on first call
06h DWORD object ID (big-endian)
Format of reply buffer:
Offset Size Description
00h WORD (call) length of following results buffer (max 107h)
02h WORD next sequence number (big-endian)
04h DWORD object ID (big-endian)
08h BYTE trustee directory rights (see AH=E2h/SF=03h)
09h BYTE length fo trustee path
0Ah N BYTEs trustee path
----------21E3--SF64-------------------------
INT 21 - Novell NetWare - QUEUE SERVICES - CREATE QUEUE
AH = E3h subfn 64h
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status (00h,96h,99h,9Bh,9Ch,EDh-F1h,F5h,F7h,FCh,FEh,FFh)
(see below)
Notes: this function is supported by Advanced NetWare 2.1+
caller must be on a workstation with supervisor privileges
SeeAlso: AH=E3h/SF=65h,AH=E3h/SF=66h,AH=E3h/SF=68h,AH=E3h/SF=6Bh
Values for status:
00h successful
96h server out of memory
99h directory full
9Bh invalid directory handle
9Ch invalid path
D0h queue error
D1h no such queue
D2h no server for queue
D3h no queue rights
D4h queue full
D5h no queue job
D6h no job rights
D7h queue servicing error
D9h station is not a server
DAh queue halted
DBh too many queue servers
EDh property already exists
EEh object already exists
EFh invalid name
F0h wildcard not allowed
F1h invalid bindery security level
F5h not permitted to create object
F7h not permitted to create property
FCh no such object
FEh server bindery locked
FFh bindery failure
Format of request buffer:
Offset Size Description
00h WORD length of following data (max ABh)
02h BYTE 64h (subfunction "Create Queue")
03h WORD queue type (big-endian)
05h BYTE length of queue's name (01h-2Fh)
06h N BYTEs queue's name
BYTE directory handle or 00h
BYTE length of path name (01h-76h)
N BYTEs path name of directory in which to create queue subdirectory
Format of reply buffer:
Offset Size Description
00h WORD (call) 0004h (size of following results buffer)
02h DWORD object ID of queue (big-endian)
----------21E3--SF65-------------------------
INT 21 - Novell NetWare - QUEUE SERVICES - DESTROY QUEUE
AH = E3h subfn 65h
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status (00h,96h,9Ch,D0h,D1h,FFh) (see also AH=E3h/SF=64h)
FFh hardware failure
Desc: abort all active jobs, detach all job servers, remove all job entries,
delete all job files, remove the queue object and its properties
from the bindery, and delete the queue's subdirectory
Notes: this function is supported by Advanced NetWare 2.1+
caller must have SUPERVISOR privileges
SeeAlso: AH=E3h/SF=64h,AH=E3h/SF=66h,AH=E3h/SF=68h,AH=E3h/SF=6Ah,AH=E3h/SF=70h
Format of request buffer:
Offset Size Description
00h WORD 0005h (length of following data)
02h BYTE 65h (subfunction "Destroy Queue")
03h DWORD object ID of queue (big-endian)
Format of reply buffer:
Offset Size Description
00h WORD (call) 0000h (no results returned)
----------21E3--SF66-------------------------
INT 21 - Novell NetWare - QUEUE SERVICES - READ QUEUE CURRENT STATUS
AH = E3h subfn 66h
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status (00h,96h,9Ch,D1h-D3h,F1h,FCh,FEh,FFh) (see AH=E3h/SF=64h)
Notes: this function is supported by Advanced NetWare 2.1+
caller must be on a workstation which is security-equivalent to a
member of the queue's Q_USERS or Q_OPERATORS properties
SeeAlso: AH=E3h/SF=64h,AH=E3h/SF=67h,AH=E3h/SF=6Fh,AH=E3h/SF=76h
Format of request buffer:
Offset Size Description
00h WORD 0005h (length of following data)
02h BYTE 66h (subfunction "Read Queue Current Status")
03h DWORD object ID of queue (big-endian)
Format of reply buffer:
Offset Size Description
00h WORD (call) 0085h (size of following results)
02h DWORD object ID of queue (big-endian)
06h BYTE status of queue
bit 0: operator disabled addition of new jobs
bit 1: operator refuses additional job servers attaching
bit 2: operator disabled job servicing
07h BYTE number of jobs in queue (00h-FAh)
08h BYTE number of servers attached to queue (00h-19h)
09h 25 DWORDs list of object IDs of attached servers
6Dh 25 BYTEs list of attached servers' stations
86h BYTE (call) maximum number of servers to return
----------21E3--SF67-------------------------
INT 21 - Novell NetWare - QUEUE SERVICES - SET QUEUE CURRENT STATUS
AH = E3h subfn 67h
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status (00h,96h,9Ch,D0h,D1h,D3h,FEh,FFh) (see AH=E3h/SF=64h)
Notes: this function is supported by Advanced NetWare 2.1+
caller must have operator privileges
SeeAlso: AH=E3h/SF=64h,AH=E3h/SF=66h,AH=E3h/SF=6Fh,AH=E3h/SF=76h
Format of request buffer:
Offset Size Description
00h WORD 0006h (length of following data)
02h BYTE 67h (subfunction "Set Queue Current Status")
03h DWORD object ID of queue (big-endian)
07h BYTE queue status
bit 0: operator disabled addition of new jobs
bit 1: operator refuses additional job servers attaching
bit 2: operator disabled job servicing
Format of reply buffer:
Offset Size Description
00h WORD (call) 0000h (no results returned)
----------21E3--SF68-------------------------
INT 21 - Novell NetWare - QUEUE SERVICES - CREATE QUEUE JOB AND FILE
AH = E3h subfn 68h
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status (00h,96h,99h,9Ch,D0h-D4h,DAh,EDh,EFh-F1h,F7h,FCh,FEh,FFh)
(see AH=E3h/SF=64h)
Notes: this function is supported by Advanced NetWare 2.1+
caller must be on a workstation which is security-equivalent to a
member of the queue's Q_USER property
SeeAlso: AH=E3h/SF=69h,AH=E3h/SF=6Ah,AH=E3h/SF=6Eh
Format of request buffer:
Offset Size Description
00h WORD 0107h (length of following data)
02h BYTE 68h (subfunction "Close File and Start Queue Job")
03h DWORD object ID of queue (big-endian)
07h BYTE client station
08h BYTE client task number
09h DWORD object ID of client (big-endian)
0Dh DWORD object ID of target server (big-endian)
FFFFFFFh if any server acceptable
11h 6 BYTEs target execution time (year,month,day,hour,minute,second)
FFFFFFFFFFFFh to execute as soon as possible
17h 6 BYTEs job entry time (year,month,day,hour,minute,second)
1Dh WORD job number (big-endian)
1Fh WORD job type (big-endian)
21h BYTE job position
22h BYTE job control flags
23h 14 BYTEs ASCIZ job file name
31h 6 BYTEs job file handle
37h BYTE server station
38h BYTE server task number
39h DWORD object ID of server (big-endian)
3Dh 50 BYTEs ASCIZ job description string
6Fh 152 BYTEs client record area
Format of reply buffer:
Offset Size Description
00h WORD (call) 0036h (size of following results buffer)
02h BYTE client station
03h BYTE client task number
04h DWORD object ID of client (big-endian)
08h DWORD object ID of target server (big-endian)
0Ch 6 BYTEs target execution time (year,month,day,hour,minute,second)
12h 6 BYTEs job entry time (year,month,day,hour,minute,second)
18h WORD job number (big-endian)
1Ah WORD job type (big-endian)
1Ch BYTE job position
1Dh BYTE job control flags
1Eh 14 BYTEs ASCIZ job file name
2Ch 6 BYTEs job file handle
32h BYTE server station
33h BYTE server task number
34h DWORD object ID of server or 00000000h (big-endian)
----------21E3--SF69-------------------------
INT 21 - Novell NetWare - QUEUE SERVICES - CLOSE FILE AND START QUEUE JOB
AH = E3h subfn 69h
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status (00h,96h,D0h,D1h,D3h,D5h,D6h,FEh,FFh) (see AH=E3h/SF=64h)
Notes: this function is supported by Advanced NetWare 2.1+
caller must be on the workstation which created the job
SeeAlso: AH=E3h/SF=68h,AH=E3h/SF=6Ah,AH=E3h/SF=6Eh
Format of request buffer:
Offset Size Description
00h WORD 0007h (length of following data)
02h BYTE 69h (subfunction "Close File and Start Queue Job")
03h DWORD object ID of queue (big-endian)
07h WORD job number (big-endian)
Format of reply buffer:
Offset Size Description
00h WORD (call) 0000h (no results returned)
----------21E3--SF6A-------------------------
INT 21 - Novell NetWare - QUEUE SERVICES - REMOVE JOB FROM QUEUE
AH = E3h subfn 6Ah
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status (00h,96h,D0h,D1h,D5h,D6h,FEh,FFh) (see AH=E3h/SF=64h)
Notes: this function is supported by Advanced NetWare 2.1+
caller must have created the job or be an operator
SeeAlso: AH=E3h/SF=68h,AH=E3h/SF=6Ah,AH=E3h/SF=6Eh
Format of request buffer:
Offset Size Description
00h WORD 0007h (length of following data)
02h BYTE 6Ah (subfunction "Remove Job From Queue")
03h DWORD object ID of queue (big-endian)
07h WORD job number (big-endian)
Format of reply buffer:
Offset Size Description
00h WORD (call) 0000h (no results returned)
----------21E3--SF6B-------------------------
INT 21 - Novell NetWare - QUEUE SERVICES - GET QUEUE JOB LIST
AH = E3h subfn 6Bh
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status (00h,96h,9Ch,D0h-D3h,FCh,FEh,FFh) (see AH=E3h/SF=64h)
Notes: this function is supported by Advanced NetWare 2.1+
caller must be on a workstation which is security-equivalent to a
member of the Q_USERS or Q_OPERATORS properties
SeeAlso: AH=E3h/SF=68h,AH=E3h/SF=6Ah,AH=E3h/SF=6Eh
Format of request buffer:
Offset Size Description
00h WORD 0005h (length of following data)
02h BYTE 6Bh (subfunction "Get Queue Job List")
03h DWORD object ID of queue (big-endian)
Format of reply buffer:
Offset Size Description
00h WORD (call) size of following results buffer (max 1F6h)
02h WORD job count (big-endian)
04h N WORDs list of job numbers by position in queue (big-endian)
WORD maximum job numbers
----------21E3--SF6C-------------------------
INT 21 - Novell NetWare - QUEUE SERVICES - READ QUEUE JOB ENTRY
AH = E3h subfn 6Ch
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status (00h,96h,D0h-D3h,D5h,FCh,FEh,FFh) (see AH=E3h/SF=64h)
Notes: this function is supported by Advanced NetWare 2.1+
caller must be on a workstation which is security-equivalent to a
member of the Q_USERS, Q_OPERATORS, or Q_SERVERS properties
SeeAlso: AH=E3h/SF=68h,AH=E3h/SF=6Ah,AH=E3h/SF=6Eh
Format of request buffer:
Offset Size Description
00h WORD 0007h (length of following data)
02h BYTE 6Ch (subfunction "Read Queue Job Entry")
03h DWORD object ID of queue (big-endian)
07h WORD job number (big-endian)
Format of reply buffer:
Offset Size Description
00h WORD (call) 0100h (size of following results)
02h BYTE client station number
03h BYTE client task number
04h DWORD object ID of client
08h DWORD object ID of target server (big-endian)
FFFFFFFFh if any server acceptable
0Ch 6 BYTEs target execution time (year,month,day,hour,minute,second)
FFFFFFFFFFFFh if serviced as soon as possible
12h 6 BYTEs job entry time (year,month,day,hour,minute,second)
18h WORD job number (big-endian)
1Ah WORD job type (big-endian)
1Ch BYTE job position
1Dh BYTE job control flags
bit 3: job will be serviced automatically if connection broken
bit 4: job remains in queue after server aborts job
bit 5: client has not filled associated job file
bit 6: User Hold--job advances, but cannot be serviced until
this bit is cleared by user or operator
bit 7: Operator Hold--job advances, but cannot be serviced
until this bit is cleared by an operator
1Eh 14 BYTEs ASCIZ job filename
2Ch 6 BYTEs job file handle
32h BYTE server station
33h BYTE server task number
34h DWORD object ID of server
38h 50 BYTEs ASCIZ job description string
6Ah 152 BYTEs client record area
----------21E3--SF6D-------------------------
INT 21 - Novell NetWare - QUEUE SERVICES - CHANGE QUEUE JOB ENTRY
AH = E3h subfn 6Dh
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status (00h,96h,D0h,D1h,D5h,D7h,FEh,FFh) (see AH=E3h/SF=64h)
Notes: this function is supported by Advanced NetWare 2.1+
caller must be an operator or the user who created the job
SeeAlso: AH=E3h/SF=68h,AH=E3h/SF=6Ah,AH=E3h/SF=6Ch,AH=E3h/SF=6Eh
Format of request buffer:
Offset Size Description
00h WORD 0105h (length of following data)
02h BYTE 6Dh (subfunction "Change Queue Job Entry")
03h DWORD object ID of queue (big-endian)
07h BYTE client station number
08h BYTE client task number
09h DWORD object ID of client
0Dh DWORD object ID of target server (big-endian)
11h 6 BYTEs target execution time (year,month,day,hour,minute,second)
17h 6 BYTEs job entry time (year,month,day,hour,minute,second)
1Dh WORD job number (big-endian)
1Fh WORD job type (big-endian)
21h BYTE job position
22h BYTE job control flags
bit 3: job will be serviced automatically if connection broken
bit 4: job remains in queue after server aborts job
bit 5: client has not filled associated job file
bit 6: User Hold--job advances, but cannot be serviced until
this bit is cleared by user or operator
bit 7: Operator Hold--job advances, but cannot be serviced
until this bit is cleared by an operator
23h 14 BYTEs ASCIZ job filename
31h 6 BYTEs job file handle
37h BYTE server station
38h BYTE server task number
39h DWORD object ID of server
3Dh 50 BYTEs ASCIZ job description string
6Fh 152 BYTEs client record area
Format of reply buffer:
Offset Size Description
00h WORD (call) 0000h (no results returned)
----------21E3--SF6E-------------------------
INT 21 - Novell NetWare - QUEUE SERVICES - CHANGE QUEUE JOB POSITION
AH = E3h subfn 6Eh
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status (00h,96h,D0h,D1h,D5h,D6h,FEh,FFh) (see AH=E3h/SF=64h)
Notes: this function is supported by Advanced NetWare 2.1+
caller must be an operator
if the specified position is greater than the number of jobs in the
queue, the job is placed at the end of the queue
SeeAlso: AH=E3h/SF=68h,AH=E3h/SF=6Ah,AH=E3h/SF=6Ch,AH=E3h/SF=6Dh
Format of request buffer:
Offset Size Description
00h WORD 0008h (length of following data)
02h BYTE 6Eh (subfunction "Change Queue Job Position")
03h DWORD object ID of queue (big-endian)
07h WORD job number (big-endian)
09h BYTE new position in queue (01h-FAh)
Format of reply buffer:
Offset Size Description
00h WORD (call) 0000h (no results returned)
----------21E3--SF6F-------------------------
INT 21 - Novell NetWare - QUEUE SERVICES - ATTACH QUEUE SERVER TO QUEUE
AH = E3h subfn 6Fh
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status (00h,96h,9Ch,D0h,D1h,D3h,DAh,DBh,FEh,FFh)
(see also AH=E3h/SF=64h)
FFh bindery failure, or no such property, or no such member
Desc: attach the calling job server to the specified queue
Notes: this function is supported by Advanced NetWare 2.1+
a queue may have up to 25 job servers attached
the calling workstation must be security-equivalent to a member of the
queue's Q_SERVERS property
SeeAlso: AH=E3h/SF=70h,AH=E3h/SF=71h,AH=E3h/SF=72h,AH=E3h/SF=73h,AH=E3h/SF=76h
Format of request buffer:
Offset Size Description
00h WORD 0005h (length of following data)
02h BYTE 6Fh (subfunction "Attach Queue Server To Queue")
03h DWORD object ID of queue (big-endian)
Format of reply buffer:
Offset Size Description
00h WORD (call) 0000h (no results returned)
----------21E3--SF70-------------------------
INT 21 - Novell NetWare - QUEUE SERVICES - DETACH QUEUE SERVER FROM QUEUE
AH = E3h subfn 70h
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status (00h,96h,9Ch,D0h,D1h,D2h,FEh,FFh) (see AH=E3h/SF=64h)
Desc: remove the calling job server from the specified queue's list of
servers
Notes: this function is supported by Advanced NetWare 2.1+
the caller must have previously attached itself to the queue
SeeAlso: AH=E3h/SF=6Fh,AH=E3h/SF=72h,AH=E3h/SF=73h,AH=E3h/SF=76h
Format of request buffer:
Offset Size Description
00h WORD 0005h (length of following data)
02h BYTE 70h (subfunction "Detach Queue Server From Queue")
03h DWORD object ID of queue (big-endian)
Format of reply buffer:
Offset Size Description
00h WORD (call) 0000h (no results returned)
----------21E3--SF71-------------------------
INT 21 - Novell NetWare - QUEUE SERVICES - SERVICE QUEUE JOB AND OPEN FILE
AH = E3h subfn 71h
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see AH=E3h/SF=68h)
Return: AL = status (00h,96h,9Ch,D0h,D1h,D3h,D5h,D9h,DAh,FEh,FFh)
(see AH=E3h/SF=64h)
Notes: this function is supported by Advanced NetWare 2.1+
the caller must be on a workstation which is security-equivalent to a
member of the queue's Q_USERS, Q_OPERATORS, or Q_SERVERS properties
SeeAlso: AH=E3h/SF=6Fh,AH=E3h/SF=72h,AH=E3h/SF=73h,AH=E3h/SF=76h
Format of request buffer:
Offset Size Description
00h WORD 0007h (length of following data)
02h BYTE 71h (subfunction "Service Queue Job and Open File")
03h DWORD object ID of queue (big-endian)
07h WORD target job type (big-endian)
FFFFh any
----------21E3--SF72-------------------------
INT 21 - Novell NetWare - QUEUE SERVICES - FINISH SERVICING QUEUE JOB AND FILE
AH = E3h subfn 72h
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status (00h,96h,D0h,D1h,D6h) (see AH=E3h/SF=64h)
Desc: inform the Queue Management System (QMS) that the queue server has
completed a job
Notes: this function is supported by Advanced NetWare 2.1+
the caller must be a job server which has previously obtained a job
for servicing
SeeAlso: AH=E3h/SF=6Fh,AH=E3h/SF=71h,AH=E3h/SF=73h,AH=E3h/SF=76h
Format of request buffer:
Offset Size Description
00h WORD 000Bh (length of following data)
02h BYTE 72h (subfunction "Finish Servicing Queue Job and File")
03h DWORD object ID of queue (big-endian)
07h WORD job number (big-endian)
09h DWORD charge (big-endian)
Format of reply buffer:
Offset Size Description
00h WORD (call) 0000h (no results returned)
----------21E3--SF73-------------------------
INT 21 - Novell NetWare - QUEUE SERVICES - ABORT SERVICING QUEUE JOB AND FILE
AH = E3h subfn 73h
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status (00h,96h,D0h,D1h,D6h,D9h) (see AH=E3h/SF=64h)
Desc: inform the Queue Management System (QMS) that the queue server is
unable to service a previously-accepted job
Note: this function is supported by Advanced NetWare 2.1+
SeeAlso: AH=E3h/SF=6Fh,AH=E3h/SF=71h,AH=E3h/SF=72h,AH=E3h/SF=76h
Format of request buffer:
Offset Size Description
00h WORD 0007h (length of following data)
02h BYTE 73h (subfunction "Abort Servicing Queue Job and File")
03h DWORD object ID of queue (big-endian)
07h WORD job number (big-endian)
Format of reply buffer:
Offset Size Description
00h WORD (call) 0000h (no results returned)
----------21E3--SF74-------------------------
INT 21 - Novell NetWare - QUEUE SERVICES - CHANGE TO CLIENT RIGHTS
AH = E3h subfn 74h
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status (00h,96h,D0h,D1h,D5h,D9h) (see AH=E3h/SF=64h)
Desc: temporarily assume the login identity of the client submitting the
job being serviced
Notes: this function is supported by Advanced NetWare 2.1+
caller must be a job server which has obtained a job for servicing
SeeAlso: AH=E3h/SF=75h
Format of request buffer:
Offset Size Description
00h WORD 0007h (length of following data)
02h BYTE 74h (subfunction "Change To Client Rights")
03h DWORD object ID of queue (big-endian)
07h WORD job number (big-endian)
Format of reply buffer:
Offset Size Description
00h WORD (call) 0000h (no results returned)
----------21E3--SF75-------------------------
INT 21 - Novell NetWare - QUEUE SERVICES - RESTORE QUEUE SERVER RIGHTS
AH = E3h subfn 75h
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status (00h,96h,9Ch,D0h,D1h,D3h,D5h,D9h,DAh,FEh,FFh)
(see AH=E3h/SF=64h)
Desc: restore server's own identity after assuming the login identity of the
client submitting the job being serviced
Notes: this function is supported by Advanced NetWare 2.1+
caller must be a job server which has previously changed its identity
SeeAlso: AH=E3h/SF=74h
Format of request buffer:
Offset Size Description
00h WORD 0001h (length of following data)
02h BYTE 75h (subfunction "Change To Client Rights")
Format of reply buffer:
Offset Size Description
00h WORD (call) 0000h (no results returned)
----------21E3--SF76-------------------------
INT 21 - Novell NetWare - QUEUE SERVICES - READ QUEUE SERVER CURRENT STATUS
AH = E3h subfn 76h
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status (00h,96h,9Ch,D1h-D3h,F1h,FCh,FEh,FFh) (see AH=E3h/SF=64h)
Notes: this function is supported by Advanced NetWare 2.1+
caller must be on a workstation which is security-equivalent to a
member of the Q_USERS or Q_OPERATORS properties
SeeAlso: AH=E3h/SF=68h,AH=E3h/SF=6Ch,AH=E3h/SF=6Fh,AH=E3h/SF=77h,AH=E3h/SF=78h
Format of request buffer:
Offset Size Description
00h WORD 000Ah (length of following data)
02h BYTE 76h (subfunction "Read Queue Server Current Status")
03h DWORD object ID of queue (big-endian)
07h DWORD object ID of server (big-endian)
0Bh BYTE server station
Format of reply buffer:
Offset Size Description
00h WORD (call) 0040h (size of following results)
02h 64 BYTEs server status record (format depends on server)
first four bytes should contain estimated "price" for an
average job
----------21E3--SF76-------------------------
INT 21 - Novell NetWare - QUEUE SERVICES - READ QUEUE SERVER CURRENT STATUS
AH = E3h subfn 76h
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status (00h,96h,9Ch,D0h,D1h,FEh,FFh) (see AH=E3h/SF=64h)
Notes: this function is supported by Advanced NetWare 2.1+
caller must be a job server which has attached itself to the queue
SeeAlso: AH=E3h/SF=68h,AH=E3h/SF=6Ch,AH=E3h/SF=6Fh,AH=E3h/SF=76h,AH=E3h/SF=78h
Format of request buffer:
Offset Size Description
00h WORD 0045h (length of following data)
02h BYTE 77h (subfunction "Set Queue Server Current Status")
03h DWORD object ID of queue (big-endian)
02h 64 BYTEs server status record (format depends on server)
first four bytes should contain estimated "price" for an
average job
Format of reply buffer:
Offset Size Description
00h WORD (call) 0000h (no results returned)
----------21E3--SF78-------------------------
INT 21 - Novell NetWare - QUEUE SERVICES - GET QUEUE JOB'S FILE SIZE
AH = E3h subfn 78h
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status (see also AH=E3h/SF=64h)
00h successful
Notes: this function is supported by Advanced NetWare 2.1+
caller must be on a workstation which is security-equivalent to a
member of the queue's Q_USERS, Q_OPERATORS, or Q_SERVERS properties
SeeAlso: AH=E3h/SF=68h,AH=E3h/SF=6Ch,AH=E3h/SF=71h
Format of request buffer:
Offset Size Description
00h WORD 0007h (length of following data)
02h BYTE 78h (subfunction "Get Queue Job's File Size")
03h DWORD object ID of queue (big-endian)
07h WORD job number (big-endian)
Format of reply buffer:
Offset Size Description
00h WORD (call) 000Ah (size of following results)
02h DWORD object ID of queue (big-endian)
06h WORD job number (big-endian)
08h DWORD size of job file in bytes (big-endian)
----------21E3--SF96-------------------------
INT 21 - Novell NetWare - ACCOUNTING SERVICES - GET ACCOUNT STATUS
AH = E3h subfn 96h
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status
00h successful
C0h no account privileges
C1h no account balance
Note: this function is supported by Advanced NetWare 2.1+
SeeAlso: AH=E3h/SF=97h,AH=E3h/SF=98h,AH=E3h/SF=99h
Format of request buffer:
Offset Size Description
00h WORD length of following data (max 33h)
02h BYTE 96h (subfunction "Get Account Status")
03h WORD type of bindery object (big-endian)
05h BYTE length of object name (01h to 2Fh)
06h N BYTEs object name
Format of reply buffer:
Offset Size Description
00h WORD (call) length of following buffer space
02h DWORD account balance (big-endian)
06h DWORD credit limit (big-endian)
signed number indicating lowest allowable account balance
0Ah 120 BYTEs reserved
82h DWORD object ID, server 1 (big-endian)
86h DWORD hold amount, server 1 (big-endian)
...
F8h DWORD object ID, server 16 (big-endian)
FCh DWORD hold amount, server 16 (big-endian)
Note: the reply buffer lists the servers which have placed holds on a portion
of the account balance, and the amount reserved by each
----------21E3--SF97-------------------------
INT 21 - Novell NetWare - ACCOUNTING SERVICES - SUBMIT ACCOUNT CHARGE
AH = E3h subfn 97h
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status
00h successful
C0h no account privileges
C1h no account balance
C2h credit limit exceeded
Note: this function is supported by Advanced NetWare 2.1+
SeeAlso: AH=E3h/SF=96h,AH=E3h/SF=98h
Format of request buffer:
Offset Size Description
00h WORD length of following data (max 13Fh)
02h BYTE 97h (subfunction "Submit Account Charge")
03h WORD service type (big-endian)
05h DWORD amount to be charged to account (big-endian)
09h DWORD amount of prior hold to be cancelled (big-endian)
0Dh WORD type of bindery object (big-endian)
0Fh WORD type of comment (big-endian)
8000h-FFFFh reserved for experimental use
11h BYTE length of object's name
12h N BYTEs object name
BYTE length of comment
N BYTEs comment
Format of reply buffer:
Offset Size Description
00h WORD 0000h (no data returned)
----------21E3--SF98-------------------------
INT 21 - Novell NetWare - ACCOUNTING SERVICES - SUBMIT ACCOUNT HOLD
AH = E3h subfn 98h
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status
00h successful
C0h no account privileges
C1h no account balance
C2h credit limit exceeded
C3h too many holds on account
Note: this function is supported by Advanced NetWare 2.1+
SeeAlso: AH=E3h/SF=96h,AH=E3h/SF=97h
Format of request buffer:
Offset Size Description
00h WORD length of following data (max 37h)
02h BYTE 98h (subfunction "Submit Account Hold")
03h DWORD amount of account balance to reserve (big-endian)
07h WORD type of bindery object
09h BYTE length of object's name
0Ah N BYTEs object name
Format of reply buffer:
Offset Size Description
00h WORD 0000h (no data returned)
----------21E3--SF99-------------------------
INT 21 - Novell NetWare - ACCOUNTING SERVICES - SUBMIT ACCOUNT NOTE
AH = E3h subfn 99h
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status
00h successful
C0h no account privileges
Note: this function is supported by Advanced NetWare 2.1+
SeeAlso: AH=E3h/SF=96h
Format of request buffer:
Offset Size Description
00h WORD length of following data (max 137h)
02h BYTE 99h (subfunction "Submit Account Note")
03h WORD type of service (big-endian)
05h WORD type of bindery object (big-endian)
07h WORD type of comment (big-endian)
8000h-FFFFh reserved for experimental use
09h BYTE length of object's name
0Ah N BYTEs object name
BYTE length of comment
N BYTEs comment
Format of reply buffer:
Offset Size Description
00h WORD 0000h (no data returned)
----------21E3--SFC8-------------------------
INT 21 - Novell NetWare - FILE SERVER - CHECK CONSOLE PRIVILEGES
AH = E3h subfn C8h
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status
00h successful
C6h no console rights
Desc: determine whether the caller is a console operator
Notes: this function is supported by Advanced NetWare 2.1+
NetWare determines console privileges by checking the file server's
OPERATOR property for the caller's object ID
SeeAlso: AH=E3h/SF=C9h,AH=E3h/SF=D1h
Format of request buffer:
Offset Size Description
00h WORD 0001h (length of following data)
02h BYTE C8h (subfunction "Check Console Privileges")
Format of reply buffer:
Offset Size Description
00h WORD (call) 0000h (no results returned)
----------21E3--SFC9-------------------------
INT 21 - Novell NetWare - FILE SERVER - GET FILE SERVER DESCRIPTION STRINGS
AH = E3h subfn C9h
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status
00h successful
Notes: this function is supported by Advanced NetWare 2.1+
the calling workstation must be attached to the file server
SeeAlso: AH=E3h/SF=11h,AH=E3h/SF=CDh,AH=E3h/SF=E8h
Format of request buffer:
Offset Size Description
00h WORD 0001h (length of following data)
02h BYTE C9h (subfunction "Get File Server Description Strings")
Format of reply buffer:
Offset Size Description
00h WORD (call) 0200h (size of following results buffer)
02h var ASCIZ name of company distributing this copy of NetWare
var ASCIZ version and revision
9 BYTEs ASCIZ revision date (mm/dd/yy)
var ASCIZ copyright notice
----------21E3--SFCA-------------------------
INT 21 - Novell NetWare - FILE SERVER - SET FILE SERVER DATE AND TIME
AH = E3h subfn CAh
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status
00h successful
C6h no console rights
Notes: this function is supported by Advanced NetWare 2.1+
the calling workstation must have console operator privileges
SeeAlso: AH=2Bh,AH=2Dh,AH=E3h/SF=C8h,AH=E7h
Format of request buffer:
Offset Size Description
00h WORD 0007h (length of following data)
02h BYTE CAh (subfunction "Set File Server Date And Time")
03h BYTE year (00-79 = 2000-2079, 80-99 = 1980-1999)
04h BYTE month (1-12)
05h BYTE day (1-31)
06h BYTE hour (0-23)
07h BYTE minute
08h BYTR second
Format of reply buffer:
Offset Size Description
00h WORD (call) 0000h (no results returned)
----------21E3--SFCB-------------------------
INT 21 - Novell NetWare - FILE SERVER - DISABLE FILE SERVER LOGIN
AH = E3h subfn CBh
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status
00h successful
C6h no console rights
Notes: this function is supported by Advanced NetWare 2.1+
the calling workstation must have console operator privileges
SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=CCh,AH=E3h/SF=D3h
Format of request buffer:
Offset Size Description
00h WORD 0001h (length of following data)
02h BYTE CBh (subfunction "Disable File Server Login")
Format of reply buffer:
Offset Size Description
00h WORD (call) 0000h (no results returned)
----------21E3--SFCC-------------------------
INT 21 - Novell NetWare - FILE SERVER - ENABLE FILE SERVER LOGIN
AH = E3h subfn CCh
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status
00h successful
C6h no console rights
Notes: this function is supported by Advanced NetWare 2.1+
the calling workstation must have console operator privileges
SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=CBh
Format of request buffer:
Offset Size Description
00h WORD 0001h (length of following data)
02h BYTE CCh (subfunction "Enable File Server Login")
Format of reply buffer:
Offset Size Description
00h WORD (call) 0000h (no results returned)
----------21E3--SFCD-------------------------
INT 21 - Novell NetWare - FILE SERVER - GET FILE SERVER LOGIN STATUS
AH = E3h subfn CDh
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status
00h successful
C6h no console rights
Notes: this function is supported by Advanced NetWare 2.1+
the calling workstation must have console operator privileges
SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=CBh,AH=E3h/SF=CCh
Format of request buffer:
Offset Size Description
00h WORD 0001h (length of following data)
02h BYTE CDh (subfunction "Get File Server Login Status")
Format of reply buffer:
Offset Size Description
00h WORD (call) 0001h (size of following results buffer)
02h BYTE login state (00h disabled, 01h enabled)
----------21E3--SFCE-------------------------
INT 21 - Novell NetWare - FILE SERVICES - PURGE ALL ERASED FILES
AH = E3h subfn CEh
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status
00h successful
C6h no console rights
Notes: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX
all files marked for deletion on the file server are purged, regardless
of which workstation actually erased them
the calling workstation must have console operator privileges
SeeAlso: AH=13h,AH=E2h/SF=10h,AH=E3h/SF=C8h,AX=F244h
Format of request buffer:
Offset Size Description
00h WORD 0001h (length of following data)
02h BYTE CEh (subfunction "Purge All Erased Files")
Format of reply buffer:
Offset Size Description
00h WORD (call) 0000h (no results returned)
----------21E3--SFCF-------------------------
INT 21 - Novell NetWare - FILE SERVER - DISABLE TRANSACTION TRACKING
AH = E3h subfn CFh
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status
00h successful
C6h no console rights
Notes: this function is supported by Advanced NetWare 2.1+
the calling workstation must have console operator privileges
SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=D0h
Format of request buffer:
Offset Size Description
00h WORD 0001h (length of following data)
02h BYTE CFh (subfunction "Disable Transaction Tracking")
Format of reply buffer:
Offset Size Description
00h WORD (call) 0000h (no results returned)
----------21E3--SFD0-------------------------
INT 21 - Novell NetWare - FILE SERVER - ENABLE TRANSACTION TRACKING
AH = E3h subfn D0h
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status
00h successful
C6h no console rights
Desc: restart transaction tracking after being stopped either explicitly by
AH=E3h/SF=CFh or automatically due to a full transaction volume
Notes: this function is supported by Advanced NetWare 2.1+
the calling workstation must have console operator privileges
SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=CFh
Format of request buffer:
Offset Size Description
00h WORD 0001h (length of following data)
02h BYTE D0h (subfunction "Enable Transaction Tracking")
Format of reply buffer:
Offset Size Description
00h WORD (call) 0000h (no results returned)
----------21E3--SFD1-------------------------
INT 21 - Novell NetWare - FILE SERVER - SEND CONSOLE BROADCAST
AH = E3h subfn D1h
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status
00h successful
C6h no console rights
Notes: this function is supported by Advanced NetWare 2.1+
the calling workstation must have console operator privileges
the broadcast message will not be received by workstations which have
disabled broadcasts with AH=E1h/SF=02h
SeeAlso: AH=E1h/SF=02h,AH=E1h/SF=09h,AH=E3h/SF=C8h,AH=E3h/SF=D3h
Format of request buffer:
Offset Size Description
00h WORD length of following data (max A2h)
02h BYTE D1h (subfunction "Send Console Broadcast")
03h BYTE number of connections to receive message
00h = all, else specific list below
04h N BYTEs connection list
BYTE length of message (max 3Ch)
N BYTEs message
Format of reply buffer:
Offset Size Description
00h WORD (call) 0000h (no results returned)
----------21E3--SFD2-------------------------
INT 21 - Novell NetWare - FILE SERVER - CLEAR CONNECTION NUMBER
AH = E3h subfn D2h
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status
00h successful
C6h no console rights
Desc: close the open files and release all file locks for a connection,
abort transactions if a TTS file server, and detach from the file
server
Notes: this function is supported by Advanced NetWare 2.1+
the caller must have SUPERVISOR privileges
SeeAlso: AH=E3h/SF=C9h,AH=E3h/SF=D1h
Format of request buffer:
Offset Size Description
00h WORD 0002h (length of following data)
02h BYTE D2h (subfunction "Clear Connection Number")
03h BYTE connection number
Format of reply buffer:
Offset Size Description
00h WORD (call) 0000h (no results returned)
----------21E3--SFD3-------------------------
INT 21 - Novell NetWare - FILE SERVER - DOWN FILE SERVER
AH = E3h subfn D3h
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status
00h successful
C6h no console rights
FFh files open
Desc: take down the file server
Notes: this function is supported by Advanced NetWare 2.1+
the calling workstation must have SUPERVISOR privileges
SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=CBh,AH=E3h/SF=CFh,AH=E3h/SF=D1h
Format of request buffer:
Offset Size Description
00h WORD 0002h (length of following data)
02h BYTE D3h (subfunction "Down File Server")
03h BYTE flag: force down even if files open if nonzero
Format of reply buffer:
Offset Size Description
00h WORD (call) 0000h (no results returned)
----------21E3--SFD4-------------------------
INT 21 - Novell NetWare - FILE SERVER - GET FILE SYSTEM STATISTICS
AH = E3h subfn D4h
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status
00h successful
C6h no console rights
Notes: this function is supported by Advanced NetWare 2.1+
the calling workstation must have console operator privileges
SeeAlso: AH=E3h/SF=0Eh,AH=E3h/SF=C8h,AH=E3h/SF=D9h,AH=E3h/SF=E7h,AH=E3h/SF=E8h
Format of request buffer:
Offset Size Description
00h WORD 0001h (length of following data)
02h BYTE D4h (subfunction "Get File System Statistics")
Format of reply buffer:
Offset Size Description
00h WORD (call) 0028h (size of following results buffer)
02h DWORD clock ticks since system started
06h WORD maximum open files set by configuration
08h WORD maximum files open concurrently
0Ah WORD current number of open files
0Ch DWORD total files opened
10h DWORD total file read requests
14h DWORD total file write requests
18h WORD current changed FATs
1Ah WORD total changed FATs
1Ch WORD number of FAT write errors
1Eh WORD number of fatal FAT write errors
20h WORD number of FAT scan errors
22h WORD maximum concurrently-indexed files
24h WORD current number of indexed files
26h WORD number of attached indexed files
28h WORD number of indexed files available
Note: all fields except the first are big-endian
----------21E3--SFD5-------------------------
INT 21 - Novell NetWare - FILE SERVER - GET TRANSACTION TRACKING STATISTICS
AH = E3h subfn D5h
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status
00h successful
C6h no console rights
Notes: this function is supported by Advanced NetWare 2.1+
the calling workstation must have console operator privileges
SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=CFh,AH=E3h/SF=D0h,AH=E3h/SF=E8h
Format of request buffer:
Offset Size Description
00h WORD 0001h (length of following data)
02h BYTE D5h (subfunction "TTS Get Statistics")
Format of reply buffer:
Offset Size Description
00h WORD (call) length of following results buffer (max 1BCh)
02h DWORD clock ticks since system started (big-endian)
06h BYTE transaction tracking supported if nonzero
(all following fields are invalid if zero)
07h BYTE transaction tracking enabled
08h WORD transaction volume number (big-endian)
0Ah WORD maximum simultaneous transactions configured (big-endian)
0Ch WORD maximum simultaneous transactions since startup (big-endian)
0Eh WORD current transactions in progress (big-endian)
10h DWORD total transactions performed (big-endian)
14h DWORD total write transactions (big-endian)
18h DWORD total transactions backed out (big-endian)
1Ch WORD number of unfilled backout requests (big-endian)
1Eh WORD disk blocks used for transaction tracking (big-endian)
20h DWORD blocks allocated for tracked-file FATs (big-endian)
24h DWORD number of file size changes during a transaction (big-endian)
28h DWORD number of file truncations during a transaction (big-endian)
2Ch BYTE number of records following
2Dh Active Transaction Records [array]
Offset Size Description
00h BYTE logical connection number
01h BYTE task number
----------21E3--SFD6-------------------------
INT 21 - Novell NetWare - FILE SERVER - GET DISK CACHE STATISTICS
AH = E3h subfn D6h
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status
00h successful
C6h no console rights
Notes: this function is supported by Advanced NetWare 2.1+
the calling workstation must have console operator privileges
SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=D5h,AH=E3h/SF=D8h,AH=E3h/SF=D9h,AH=E3h/SF=E6h
Format of request buffer:
Offset Size Description
00h WORD 0001h (length of following data)
02h BYTE D6h (subfunction "Get Disk Cache Statistics")
Format of reply buffer:
Offset Size Description
00h WORD (call) 004Eh (length of following results buffer)
02h DWORD clock ticks since system started (big-endian)
06h WORD number of cache buffers (big-endian)
08h WORD size of cache buffer in bytes (big-endian)
0Ah WORD number of dirty cache buffers (big-endian)
0Ch DWORD number of cache read requests (big-endian)
10h DWORD number of cache write requests (big-endian)
14h DWORD number of cache hits (big-endian)
18h DWORD number of cache misses (big-endian)
1Ch DWORD number of physical read requests (big-endian)
20h DWORD number of physical write requests (big-endian)
24h WORD number of physical read errors (big-endian)
26h WORD number of physical write errors (big-endian)
28h DWORD cache get requests (big-endian)
2Ch DWORD cache full write requests (big-endian)
30h DWORD cache partial write requests (big-endian)
34h DWORD background dirty writes (big-endian)
38h DWORD background aged writes (big-endian)
3Ch DWORD total cache writes (big-endian)
40h DWORD number of cache allocations (big-endian)
44h WORD thrashing count (big-endian)
46h WORD number of times LRU block was dirty (big-endian)
48h WORD number of reads on cache blocks not yet filled by writes
(big-endian)
4Ah WORD number of times a fragmented write occurred (big-endian)
4Ch WORD number of cache hits on unavailable block (big-endian)
4Eh WORD number of times a cache block was scrapped (big-endian)
----------21E3--SFD7-------------------------
INT 21 - Novell NetWare - FILE SERVER - GET DRIVE MAPPING TABLE
AH = E3h subfn D7h
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status
00h successful
C6h no console rights
Notes: this function is supported by Advanced NetWare 2.1+
the calling workstation must have console operator privileges
SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=D6h,AH=E3h/SF=D9h,AH=E3h/SF=E6h,AH=E3h/SF=E9h
Format of request buffer:
Offset Size Description
00h WORD 0001h (length of following data)
02h BYTE D7h (subfunction "Get Drive Mapping Table")
Format of reply buffer:
Offset Size Description
00h WORD (call) 00ECh (length of following results buffer)
02h DWORD clock tick elapsed since system started (big-endian)
06h BYTE fault tolerance (SFT) level
07h BYTE number of logical drives attached to server
08h BYTE number of physical drives attached to server
09h 5 BYTEs disk channel types (00h none, 01h XT, 02h AT, 03h SCSI,
04h disk coprocessor drive, 32h-FFh value-added drive types)
0Eh WORD number of outstanding controller commands (big-endian)
10h 32 BYTEs drive mapping table (FFh = no such drive)
30h 32 BYTEs drive mirror table (secondary physical drive, FFh = none)
50h 32 BYTEs dead mirror table (last drive mapped to, FFh if never mirrored)
70h BYTE physical drive being remirrored (FFh = none)
71h BYTE reserved
72h DWORD remirrored block (big-endian)
76h 60 BYTEs SFT error table (internal error counters)
----------21E3--SFD8-------------------------
INT 21 - Novell NetWare - FILE SERVER - GET PHYSICAL DISK STATISTICS
AH = E3h subfn D8h
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status
00h successful
C6h no console rights
Notes: this function is supported by Advanced NetWare 2.1+
the calling workstation must have console operator privileges
SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=D9h,AH=E3h/SF=E9h
Format of request buffer:
Offset Size Description
00h WORD 0002h (length of following data)
02h BYTE D8h (subfunction "Get Physical Disk Statistics")
03h BYTE physical disk number
Format of reply buffer:
Offset Size Description
00h WORD (call) 005Dh (size of following results record)
02h DWORD clock ticks since system started (big-endian)
06h BYTE physical disk channel
07h BYTE flag: drive removable if nonzero
08h BYTE physical drive type
09h BYTE drive number within controller
0Ah BYTE controller number
0Bh BYTE controller type
0Ch DWORD size of drive in 4K disk blocks (big-endian)
10h WORD number of cylinders on drive (big-endian)
12h BYTE number of heads
13h BYTE number of sectors per track
14h 64 BYTEs ASCIZ drive make and model
54h WORD number of I/O errors (big-endian)
56h DWORD start of Hot Fix table (big-endian)
5Ah WORD size of Hot Fix table (big-endian)
5Ch WORD number of Hot Fix blocks available (big-endian)
5Eh BYTE flag: Hot Fix disabled if nonzero
----------21E3--SFD9-------------------------
INT 21 - Novell NetWare - FILE SERVER - GET DISK CHANNEL STATISTICS
AH = E3h subfn D9h
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status
00h successful
C6h no console rights
Notes: this function is supported by Advanced NetWare 2.1+
the calling workstation must have console operator privileges
SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=D8h,AH=E3h/SF=E6h,AH=E3h/SF=E9h
Format of request buffer:
Offset Size Description
00h WORD 0002h (length of following data)
02h BYTE D9h (subfunction "Get Disk Channel Statistics")
03h BYTE channel number
Format of reply buffer:
Offset Size Description
00h WORD (call) 00A8h (size of following results record)
02h DWORD clock ticks since system started (big-endian)
06h WORD channel run state (big-endian)
00h running
01h being stopped
02h stopped
03h nonfunctional
08h WORD channel synchronization state (big-endian)
00h not in use
02h used by NetWare, no other requests
04h used by NetWare, other requests
06h in use, not needed by NetWare
08h in use, needed by NetWare
0Ah channel released, NetWare should use it
0Ah BYTE driver type
0Bh BYTE major version of driver
0Ch BYTE minor version of driver
0Dh 65 BYTEs ASCIZ driver description
4Eh WORD first I/O address used (big-endian)
50h WORD length of first I/O address (big-endian)
52h WORD second I/O address used (big-endian)
54h WORD length of second I/O address (big-endian)
56h 3 BYTEs first shared memory address
59h 2 BYTEs length of first shared memory address
5Bh 3 BYTEs second shared memory address
5Eh 2 BYTEs length of second shared memory address
60h BYTE first interrupt number in-use flag
61h BYTE first interrupt number used
62h BYTE second interrupt number in-use flag
63h BYTE second interrupt number used
64h BYTE first DMA channel in-use flag
65h BYTE first DMA channel used
66h BYTE second DMA channel in-use flag
67h BYTE second DMA channel used
68h BYTE flags
69h BYTE reserved
6Ah 80 BYTEs ASCIZ configuration description
----------21E3--SFDA-------------------------
INT 21 - Novell NetWare - FILE SERVER - GET CONNECTION'S TASK INFORMATION
AH = E3h subfn DAh
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status
00h successful
C6h no console rights
Notes: this function is supported by Advanced NetWare 2.1+
the calling workstation must have console operator privileges
SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=DBh,AH=E3h/SF=DFh,AH=E3h/SF=E1h,AH=E3h/SF=E5h
Format of request buffer:
Offset Size Description
00h WORD 0003h (length of following data)
02h BYTE DAh (subfunction "Get Connection's Task Information")
03h WORD logical connection number (big-endian)
Format of reply buffer:
Offset Size Description
00h WORD (call) size of following results record (max 1FEh)
02h BYTE lock status of connection
00h no locks
01h waiting on physical record lock
02h waiting on file lock
03h waiting on logical record lock
04h waiting on semaphore
03h var Lock Status Information (see below)
N BYTE number of records following
N+1 Active Task Information Records [array]
Offset Size Description
00h BYTE task number (01h-FFh)
01h BYTE task state
01h in TTS explicit transaction
02h in TTS implicit transaction
04h shared fileset lock active
Format of Lock Status Information:
Offset Size Description
---lock status 00h---
no fields
---lock status 01h---
00h BYTE number of waiting task
01h DWORD start address
05h DWORD end address
09h BYTE volume number
0Ah WORD directory entry number
0Ch 14 BYTEs ASCIZ filename
---lock status 02h---
00h BYTE number of waiting task
01h BYTE volume number
02h WORD directory entry number
04h 14 BYTEs ASCIZ filename
---lock status 03h---
00h BYTE number of waiting task
01h BYTE length of record name
02h N BYTEs ASCIZ record name
---lock status 04h---
00h BYTE number of waiting task
01h BYTE length of semaphore's name
02h N BYTEs ASCIZ semaphore name
----------21E3--SFDB-------------------------
INT 21 - Novell NetWare - FILE SERVER - GET CONNECTION'S OPEN FILES
AH = E3h subfn DBh
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status
00h successful
C6h no console rights
Notes: this function is supported by Advanced NetWare 2.1+
the calling workstation must have console operator privileges
SeeAlso: AH=E2h/SF=1Ah,AH=E3h/SF=C8h,AH=E3h/SF=DAh,AH=E3h/SF=DCh,AH=E3h/SF=DFh
SeeAlso: AH=E3h/SF=E1h
Format of request buffer:
Offset Size Description
00h WORD 0005h (length of following data)
02h BYTE DBh (subfunction "Get Connection's Open Files")
03h WORD logical connection number (big-endian)
05h WORD last record seen (big-endian)
0000h on first call
Format of reply buffer:
Offset Size Description
00h WORD (call) size of following results record (max 1FEh)
02h WORD next request record (place in "last record" field on next call)
0000h if no more records
04h BYTE number of records following
05h File Information Records [array]
Offset Size Description
00h BYTE task number
01h BYTE lock flags (see below)
02h BYTE access flags (see below)
03h BYTE lock type
00h no lock
FEh file lock
FFh locked by Begin Share File Set
04h BYTE volume number (00h-1Fh)
05h WORD directory entry (big-endian)
07h 14 BYTEs ASCIZ filename
Bitmask of lock flags:
bit 0: file is locked
bit 1: file opened Shareable
bit 2: logged
bit 3: file opened Normal
bit 6: TTS holding lock
bit 7: Transaction Flag set on file
Bitmask of access flags:
bit 0: file open for reading by calling station
bit 1: file open for writing by calling station
bit 2: deny reads by other stations
bit 3: deny writes by other stations
bit 4: file detached
bit 5: TTS Holding Detach
bit 6: TTS Holding Open
----------21E3--SFDC-------------------------
INT 21 - Novell NetWare - FILE SERVER - GET CONNECTIONS USING A FILE
AH = E3h subfn DCh
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status
00h successful
C6h no console rights
Notes: this function is supported by Advanced NetWare 2.1+
the calling workstation must have console operator privileges
SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=DAh,AH=E3h/SF=DBh,AH=E3h/SF=DFh,AH=E3h/SF=E1h
Format of request buffer:
Offset Size Description
00h WORD length of following data (max 104h)
02h BYTE DCh (subfunction "Get Connections Using a File")
03h WORD last record (big-endian)
0000h on first call
05h BYTE directory handle
06h BYTE length of file path
07h N BYTEs ASCIZ file path
Format of reply buffer:
Offset Size Description
00h WORD (call) size of following results record (max 1FEh)
02h WORD count of tasks which have opened or logged file (big-endian)
04h WORD count of tasks which have opened file (big-endian)
06h WORD count of opens for reading (big-endian)
08h WORD count of opens for writing (big-endian)
0Ah WORD deny read count (big-endian)
0Ch WORD deny write count (big-endian)
0Eh WORD next request record (place in "last record" field on next call)
0000h if no more records
10h BYTE locked flag
00h not locked exclusively
else locked exclusively
11h BYTE number of records following
12h File Usage Information Records [array]
Offset Size Description
00h WORD logical connection number (big-endian)
02h BYTE task number
03h BYTE lock flags (see AH=E3h/SF=DBh)
04h BYTE access flags (see AH=E3h/SF=DBh)
05h BYTE lock type
00h no lock
FEh file lock
FFh locked by Begin Share File Set
----------21E3--SFDD-------------------------
INT 21 - Novell NetWare - FILE SERVER - GET PHYSICAL RECORD LOCKS BY CONN&FILE
AH = E3h subfn DDh
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status
00h successful
C6h no console rights
FFh file not open
Notes: this function is supported by Advanced NetWare 2.1+
the calling workstation must have console operator privileges
SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=DEh,AH=E3h/SF=DFh
Format of request buffer:
Offset Size Description
00h WORD 0016h (length of following data)
02h BYTE DDh (subfunction "Get Physical Record Locks by Connection and
File")
03h WORD logical connection number (big-endian)
05h WORD last record seen (big-endian)
0000h on first call
07h BYTE volume number (00h-1Fh)
08h WORD directory handle (big-endian)
0Ah 14 BYTEs ASCIZ filename
Format of reply buffer:
Offset Size Description
00h WORD (call) size of following results record (max 1FEh)
02h WORD next request record (place in "last record" on next call)
0000h if no more records
04h BYTE number of physical record locks
05h BYTE number of records following
06h Physical Record Lock Info [array]
Offset Size Description
00h BYTE task number
01h BYTE lock status (see below)
02h DWORD starting offset of record in file (big-endian)
06h DWORD ending offset of record in file (big-endian)
Bitmask of lock status:
bit 0: exclusive lock
bit 1: shareable lock
bit 2: logged
bit 6: lock held by TTS
----------21E3--SFDE-------------------------
INT 21 - Novell NetWare - FILE SERVER - GET PHYSICAL RECORD LOCKS BY FILE
AH = E3h subfn DEh
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status
00h successful
C6h no console rights
FFh file not open
Notes: this function is supported by Advanced NetWare 2.1+
the calling workstation must have console operator privileges
SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=DDh,AH=E3h/SF=DFh
Format of request buffer:
Offset Size Description
00h WORD length of following data (max 104h)
02h BYTE DEh (subfunction "Get Physical Record Locks by File")
03h WORD last record seen (big-endian)
0000h on first call
05h BYTE directory handle
06h BYTE length of filename
07h N BYTEs ASCIZ filename
Format of reply buffer:
Offset Size Description
00h WORD (call) size of following results record (max 1FEh)
02h WORD next request record (place in "last record" on next call)
0000h if no more records
04h BYTE number of physical record locks
05h BYTE number of records following
06h Physical Record Lock Info [array]
Offset Size Description
00h WORD number of tasks logging record (big-endian)
02h WORD number of tasks with shareable lock (big-endian)
04h DWORD starting offset of record in file (big-endian)
08h DWORD ending offset of record in file (big-endian)
0Ch WORD logical connection number (big-endian)
0Eh BYTE task number
0Fh BYTE lock type
00h none
FEh file lock
FFh Begin Share File Set lock
----------21E3--SFDF-------------------------
INT 21 - Novell NetWare - FILE SERVER - GET LOGICAL RECORDS BY CONNECTION
AH = E3h subfn DFh
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status
00h successful
C6h no console rights
Notes: this function is supported by Advanced NetWare 2.1+
the calling workstation must have console operator privileges
SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=DDh,AH=E3h/SF=E0h,AH=E3h/SF=E2h
Format of request buffer:
Offset Size Description
00h WORD 0005h (length of following data)
02h BYTE DFh (subfunction "Get Logical Records By Connection")
03h WORD logical connection number (big-endian)
05h WORD last record seen (big-endian)
0000h on first call
Format of reply buffer:
Offset Size Description
00h WORD (call) size of following results record (max 1FEh)
02h WORD next request record (place in "last record" field on next call)
0000h if no more locked records
09h BYTE number of records following
0Ah Logical Lock Information Records [list]
Offset Size Description
00h BYTE task number
01h BYTE lock status (see AH=E3h/SF=DDh)
02h BYTE length of logical lock's name
03h N BYTEs logical lock's name
----------21E3--SFE0-------------------------
INT 21 - Novell NetWare - FILE SERVER - GET LOGICAL RECORD INFORMATION
AH = E3h subfn E0h
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status
00h successful
C6h no console rights
Notes: this function is supported by Advanced NetWare 2.1+
the calling workstation must have console operator privileges
SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=DDh,AH=E3h/SF=DFh,AH=E3h/SF=E2h
Format of request buffer:
Offset Size Description
00h WORD length of following data (max 67h)
02h BYTE E0h (subfunction "Get Logical Record Information")
03h WORD last record seen (big-endian)
0000h on first call
05h BYTE length of logical record's name
06h N BYTEs logical record's name
Format of reply buffer:
Offset Size Description
00h WORD (call) size of following results record (max 200h)
02h WORD number of logical connections logging the record (big-endian)
04h WORD number of logical connections with shareable lock (big-endian)
06h WORD next request record (place in "last record" field on next call)
08h BYTE locked exclusively if nonzero
09h BYTE number of records following
0Ah Task Information Records [array]
Offset Size Description
00h WORD logical connection number (big-endian)
02h BYTE task number
03h BYTE lock status (see AH=E3h/SF=DFh)
----------21E3--SFE1-------------------------
INT 21 - Novell NetWare - FILE SERVER - GET CONNECTION'S SEMAPHORES
AH = E3h subfn E1h
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status
00h successful
C6h no console rights
Notes: this function is supported by Advanced NetWare 2.1+
the calling workstation must have console operator privileges
SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=DBh,AH=E3h/SF=DFh,AH=E3h/SF=E2h
Format of request buffer:
Offset Size Description
00h WORD 0005h (length of following data)
02h BYTE E1h (subfunction "Get Connection's Semaphores")
03h WORD logical connection number (big-endian)
05h WORD last record seen (big-endian)
0000h on first call
Format of reply buffer:
Offset Size Description
00h WORD (call) size of following results record (max 1FEh)
02h WORD next request record (place in "last record" field on next call)
04h BYTE number of records following
05h Semaphore Information Records [array]
Offset Size Description
00h WORD open count (big-endian)
02h BYTE semaphore value (-128 to 127)
03h BYTE task number
04h BYTE lock type
05h BYTE length of semaphore's name
06h N BYTEs semaphore's name
14 BYTEs filename
----------21E3--SFE2-------------------------
INT 21 - Novell NetWare - FILE SERVER - GET SEMAPHORE INFORMATION
AH = E3h subfn E2h
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status
00h successful
C6h no console rights
Notes: this function is supported by Advanced NetWare 2.1+
the calling workstation must have console operator privileges
SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=E1h
Format of request buffer:
Offset Size Description
00h WORD length of following data (max 83h)
02h BYTE E2h (subfunction "Get LAN Driver's Configuration Information")
03h WORD last record seen (big-endian)
0000h on first call
05h BYTE length of semaphore's name (01h-7Fh)
06h N BYTEs semaphore's name
Format of reply buffer:
Offset Size Description
00h WORD (call) size of following results buffer (max 1FEh)
02h WORD next request record (place in "last record" on next call)
0000h if no more
04h WORD number of logical connections opening semaphore (big-endian)
06h BYTE semaphore value (-127 to 128)
07h BYTE number of records following
08h Semaphore Information [array]
Offset Size Description
00h WORD logical connection number (big-endian)
02h BYTE task number
----------21E3--SFE3-------------------------
INT 21 - Novell NetWare - FILE SERVER - GET LAN DRIVER'S CONFIGURATION INFO
AH = E3h subfn E3h
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status
00h successful
C6h no console rights
Notes: this function is supported by Advanced NetWare 2.1+
the calling workstation must have console operator privileges
SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=E7h,AH=E3h/SF=E8h
Format of request buffer:
Offset Size Description
00h WORD 0002h (length of following data)
02h BYTE E3h (subfunction "Get LAN Driver's Configuration Information")
03h BYTE LAN board (00h-03h)
Format of reply buffer:
Offset Size Description
00h WORD (call) 00ACh (size of following results buffer)
02h 4 BYTEs network number
06h 6 BYTEs node number
0Ch BYTE LAN driver installed (00h no--remaining fields invalid)
0Dh BYTE option number selected at configuration time
0Eh 160 BYTEs configuration text
ASCIZ hardware type
ASCIZ hardware settings
----------21E3--SFE5-------------------------
INT 21 - Novell NetWare - FILE SERVER - GET CONNECTION'S USAGE STATISTICS
AH = E3h subfn E5h
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status
00h successful
C6h no console rights
Notes: this function is supported by Advanced NetWare 2.1+
one must have console operator privileges to get statistics for logical
connections other than one's own
SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=DAh,AH=E3h/SF=DBh,AH=E3h/SF=E1h
Format of request buffer:
Offset Size Description
00h WORD 0003h (length of following data)
02h BYTE E5h (subfunction "Get Connection's Usage Statistics")
03h WORD logical connection number (big-endian)
Format of reply buffer:
Offset Size Description
00h WORD (call) 0014h (size of following results record)
02h DWORD clock ticks since server started (big-endian)
06h 6 BYTEs bytes read
0Ch 6 BYTEs bytes written
12h DWORD total request packets (big-endian)
----------21E3--SFE6-------------------------
INT 21 - Novell NetWare - FILE SERVER - GET BINDERY OBJECT DISK SPACE LEFT
AH = E3h subfn E6h
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status
00h successful
C6h no console rights
Notes: this function is supported by Advanced NetWare 2.1+
one must have console operator privileges to get the free space for
other bindery objects
SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=E8h,AH=E3h/SF=E9h
Format of request buffer:
Offset Size Description
00h WORD 0005h (length of following data)
02h BYTE E6h (subfunction "Get Bindery Object Disk Space Left")
03h DWORD object ID (big-endian)
Format of reply buffer:
Offset Size Description
00h WORD (call) 000Fh (size of following results buffer)
02h DWORD clock ticks elapsed since server started (big-endian)
06h DWORD object ID (big-endian)
0Ah DWORD 4K disk blocks available to user (big-endian)
0Eh BYTE restrictions
00h enforced
FFh not enforced
----------21E3--SFE7-------------------------
INT 21 - Novell NetWare - FILE SERVER - GET FILE SERVER LAN I/O STATISTICS
AH = E3h subfn E7h
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status
00h successful
Note: this function is supported by Advanced NetWare 2.1+
SeeAlso: AH=E3h/SF=0Eh,AH=E3h/SF=11h,AH=E3h/SF=D3h,AH=E3h/SF=E8h,AH=E7h
Format of request buffer:
Offset Size Description
00h WORD 0001h (length of following data)
02h BYTE E7h (subfunction "Get File Server LAN I/O Statistics")
Format of reply buffer:
Offset Size Description
00h WORD (call) 0042h (size of following results buffer)
02h DWORD clock ticks since system started
06h WORD total routing buffers
08h WORD maximum routing buffers used
0Ah WORD current routing buffers used
0Ch DWORD total file service packets
10h WORD number of file service packets buffered
12h WORD number of invalid connection packets
14h WORD packets with bad logical connection numbers
16h WORD number of packets received during processing
18h WORD number of requests reprocessed
1Ah WORD packets with bad sequence numbers
1Ch WORD number of duplicate replies sent
1Eh WORD number of acknowledgements sent
20h WORD number of packets with bad request types
22h WORD requests to attach to ws for which a request is being processed
24h WORD requests to attach from ws which is already attaching
26h WORD number of forged detach requests
28h WORD detach requests with bad connection number
2Ah WORD requests to detach from ws for which requests pending
2Ch WORD number of cancelled replies
2Eh WORD packets discarded due to excessive hop count
30h WORD packets discarded due to unknown net
32h WORD incoming packets discarded for lack of DGroup buffer
34h WORD outgoing packets discarded due to lack of buffer
36h WORD received packets destined for B,C, or D side drivers
38h DWORD number of NetBIOS packets propagated through net
3Ch DWORD total number of non-file-service packets
40h DWORD total number of routed packets
Note: all fields except the first are big-endian
----------21E3--SFE8-------------------------
INT 21 - Novell NetWare - FILE SERVER - GET FILE SERVER MISC INFORMATION
AH = E3h subfn E8h
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status
00h successful
C6h no console rights
Note: this function is supported by Advanced NetWare 2.1+
SeeAlso: AH=E3h/SF=0Eh,AH=E3h/SF=11h,AH=E3h/SF=CDh,AH=E3h/SF=E7h
Format of request buffer:
Offset Size Description
00h WORD 0001h (length of following data)
02h BYTE E8h (subfunction "Get File Server Misc Information")
Format of reply buffer:
Offset Size Description
00h WORD (call) size of following results buffer (max 0048h)
02h DWORD clock ticks since system started
06h BYTE CPU type
00h Motorola 68000
01h Intel 8086, 8088, or V20
02h Intel 80286+
07h BYTE reserved
08h BYTE number of service processes in server
09h BYTE server utilization in percent
0Ah WORD maximum bindery objects set by configuration (big-endian)
0000h = unlimited
0Ch WORD maximum number of bindery objects used (big-endian)
0Eh WORD current number of bindery objects in use (big-endian)
10h WORD total server memory in K (big-endian)
12h WORD wasted server memory in K (big-endian)
normally 0000h
14h WORD number of records following (01h-03h)
16h Dynamic Memory Information [array]
Offset Size Description
00h DWORD total dynamic space (big-endian)
04h DWORD maximum dynamic space used (big-endian)
08h DWORD current dynamic space usage (big-endian)
----------21E3--SFE9-------------------------
INT 21 - Novell NetWare - DIRECTORY SERVICES - GET VOLUME INFORMATION
AH = E3h subfn E9h
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (see below)
Return: AL = status
00h successful
Notes: this function is supported by Advanced NetWare 2.1+
SeeAlso: AH=DAh,AH=E2h/SF=15h
Format of request buffer:
Offset Size Description
00h WORD 0002h (length of following data)
02h BYTE E9h (subfunction "Get Volume Information")
03h BYTE directory handle
Format of reply buffer:
Offset Size Description
00h WORD (call) 0028h (length of following results buffer)
02h DWORD elapsed system time (big-endian)
06h BYTE volume number
07h BYTE logical drive number
08h WORD sectors per block (big-endian)
0Ah WORD starting block (big-endian)
0Ch WORD total blocks on volume (big-endian)
0Eh WORD blocks available on volume (big-endian)
10h WORD total directory slots (big-endian)
12h WORD directory slots available (big-endian)
14h WORD maximum directory entries actually used (big-endian)
16h BYTE flag: volume hashed if nonzero
17h BYTE flag: volume cached if nonzero
18h BYTE flag: volume removable if nonzero
19h BYTE flag: volume mounted if nonzero
1Ah 16 BYTEs NUL-padded volume name
----------21E4-------------------------------
INT 21 - Novell NetWare 4.0 - SET FILE ATTRIBUTES (FCB)
AH = E4h
CL = file attributes
bit 0: read only
1: hidden
2: system
7: shareable
DX:DX -> FCB (see AH=0Fh)
Return: AL = error code
SeeAlso: AX=4301h
----------21E4-------------------------------
INT 21 - VIRUS - "Anarkia" - INSTALLATION CHECK
AH = E4h
Return: AH = 04h if resident
SeeAlso: AH=E1h"VIRUS",AH=E7h"VIRUS"
----------21E400-----------------------------
INT 21 - DoubleDOS - INSTALLATION CHECK/PROGRAM STATUS
AX = E400h
Return: AL = 00h if DoubleDOS not present
= 01h if running in visible DoubleDOS partition
= 02h if running in the invisible DoubleDOS partition
SeeAlso: AH=E5h"DoubleDOS",AX=F400h
----------21E400-----------------------------
INT 21 - OS/286, OS/386 - CHAIN TO REAL-MODE HANDLER
AX = E400h
???
Return: ???
Note: protected mode only???
----------21E402-----------------------------
INT 21 - OS/286, OS/386 - SET PROTECTED-MODE TASK GATE
AX = E402h
???
Return: ???
Note: protected mode only???
SeeAlso: AX=E403h
----------21E403-----------------------------
INT 21 - OS/286, OS/386 - REMOVE PROTECTED-MODE TASK GATE
AX = E403h
???
Return: ???
Note: protected mode only???
SeeAlso: AX=E402h
----------21E5-------------------------------
INT 21 - Novell NetWare 4.0 - UPDATE FILE SIZE (FCB)
AH = E5h
DS:DX -> FCB (see AH=0Fh)
Return: AL = error code
----------21E5-------------------------------
INT 21 - DoubleDOS - OTHER PROGRAM STATUS
AH = E5h
Return: AL = 00h no program in other partition
= 01h program in other partition is running
= 02h program in other partition is suspended
SeeAlso: AX=E400h"DoubleDOS",AH=F5h"DoubleDOS"
----------21E500-----------------------------
INT 21 - OS/286, OS/386 - HEAP MANAGEMENT STRATEGY
AX = E500h
???
Return: ???
SeeAlso: AX=E501h
----------21E501-----------------------------
INT 21 - OS/286, OS/386 - FORCE HEAP COMPACTION
AX = E501h
???
Return: ???
SeeAlso: AX=E500h
----------21E6-------------------------------
INT 21 - Novell NetWare 4.0 - COPY FILE TO FILE (FCB)
AH = E6h
CX:DX = number of bytes to copy
DS:SI -> source FCB
ES:DI -> destination FCB
Return: AL = error code
----------21E6-------------------------------
INT 21 P - OS/286, OS/386 - ISSUE REAL PROCEDURE SIGNAL FROM PROTECTED MODE
AH = E6h
???
Return: ???
SeeAlso: AH=E2h"OS/286"
----------21E7-------------------------------
INT 21 - Novell NetWare - FILE SERVER - GET FILE SERVER DATE AND TIME
AH = E7h
DS:DX -> date/time buffer (see below)
Return: AL = error code
00h successful
FFh unsuccessful
Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+,
Alloy NTNX, and Banyan VINES
SeeAlso: AH=2Ah,AH=2Ch,AH=E3h/SF=CAh
Format of date/time buffer:
Offset Size Description
00h BYTE year (80-99 = 1980-1999, 0-79 = 2000-2079)
01h BYTE month (1=Jan)
02h BYTE day
03h BYTE hours
04h BYTE minutes
05h BYTE seconds
06h BYTE day of week (0 = Sunday) (Novell and NTNX only)
----------21E7-------------------------------
INT 21 - OS/286, OS/386 - CREATE CODE SEGMENT
AH = E7h
???
Return: ???
SeeAlso: AH=E8h"OS/286",AH=E9h"OS/286",AH=EAh"OS/286"
----------21E7-------------------------------
INT 21 - VIRUS - "Spyer"/"Kiev" - INSTALLATION CHECK
AH = E7h
Return: AH = 78h if resident
SeeAlso: AH=E4h"VIRUS",AX=EC59h
----------21E8-------------------------------
INT 21 - Novell NetWare 4.6, Alloy NTNX - SET FCB RE-OPEN MODE
AH = E8h
DL = mode
00h no automatic re-open
01h auto re-open
Return: AL = error code
----------21E8-------------------------------
INT 21 - OS/286, OS/386 - SEGMENT CREATION
AH = E8h
AL = type
00h data segment
01h data window/alias
02h real segment
03h real window/alias
06h shareable segment
???
Return: ???
SeeAlso: AH=E7h"OS/286",AH=E9h"OS/286"
----------21E8-------------------------------
INT 21 - DoubleDOS - SET/RESET KEYBOARD CONTROL FLAGS
AH = E8h
AL = 00h set flags for this program
= 01h set flags for other program
DX = keyboard control flags (bit set enables, cleared disables
bit 0: menu
bit 1: exchange
bit 2: entire keyboard enable/disable
bit 3: Ctrl-C
bit 4: Ctrl-PrtSc
bit 5: Alt/Erase
bit 6: Ctrl-Break
bit 7: Ctrl-NumLock
bit 8: shift-PrtSc
bit 9-13: undefined
bit 14: cancel key (clear keyboard buffer)
bit 15: suspend key
Return: DX = previous flags
Notes: disabling Ctrl-PrtSc will allow the program to intercept the keystroke;
disabling any of the other keystrokes disables them completely
identical to AH=F8h
SeeAlso: AH=E1h"DoubleDOS",AH=E2h"DoubleDOS",AH=E3h"DoubleDOS"
SeeAlso: AH=F8h"DoubleDOS"
----------21E9-------------------------------
INT 21 P - OS/286, OS/386 - CHANGE SEGMENTS
AH = E9h
AL = function
01h change code segment parameters
02h change data segment parameters
05h adjust segment limit
06h change segment base address
???
Return: ???
SeeAlso: AH=E7h"OS/286",AH=E8h"OS/286",AH=EAh"OS/286",AH=EDh"OS/286"
SeeAlso: INT 31/AX=0007h,INT 31/AX=0008h
----------21E9-------------------------------
INT 21 - DoubleDOS - SET TIMESHARING PRIORITY
AH = E9h
AL = 00h visible program gets 70%, invisible gets 30% (default)
= 01h visible program gets 50%, invisible gets 50%
= 02h visible program gets 30%, invisible gets 70%
= 03h Top program gets 70%, bottom program gets 30%
= 04h Top program gets 30%, bottom program gets 70%
= 05h get current priority
Return: AL = priority setting
Note: identical to AH=F9h
SeeAlso: AH=EAh"DoubleDOS",AH=EBh"DoubleDOS",AH=F9h"DoubleDOS"
----------21E900-----------------------------
INT 21 - Novell NetWare - DIRECTORY SERVICES - GET DIRECTORY HANDLE
AX = E900h
DX = drive number to check (0 = A:, ..., 25 = Z:, 26 ... 31)
Return: AL = directory handle
AH = flags (drive not mapped if none set)
bit 0: permanent handle
bit 1: temporary handle
bit 7: mapped to local drive
Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAlso: AH=E2h/SF=00h,AH=E2h/SF=01h,AH=E2h/SF=0Ah
----------21E905-----------------------------
INT 21 - Novell NetWare shell 3.01 - MAP A FAKE ROOT DIRECTORY
AX = E905h
BL = drive number (0=default, 1=A:, ...)
DS:DX -> ASCIZ path for fake root (may include server name or be empty)
Return: CF set on error
AL = error code (03h,0Fh,11h) (see AH=59h)
CF clear if successful
Note: if drive is not currently mapped, a drive mapping will be created
SeeAlso: AX=E906h
----------21E906-----------------------------
INT 21 - Novell NetWare shell 3.01 - DELETE FAKE ROOT DIRECTORY
AX = E906h
BL = drive number (0=default, 1=A:, ...)
Note: drive remains mapped
SeeAlso: AX=E905h
----------21E907-----------------------------
INT 21 - Novell NetWare shell 3.01 - GET RELATIVE DRIVE DEPTH
AX = E907h
BL = drive number (0=default, 1=A:, ...)
Return: AL = number of directories below the fake root
FFh if no fake root assigned
SeeAlso: AX=E905h
----------21E908BL00-------------------------
INT 21 - Novell NetWare shell 3.01 - SET SHOW DOTS
AX = E908h
BL = 00h don't return '.' or '..' during directory scans
= nonzero directory scans will return '.' or '..' entries
Return: BL = previous show-dots setting
----------21EA-------------------------------
INT 21 - Novell NetWare 4.6, Alloy NTNX - RETURN SHELL VERSION
AH = EAh
AL = return version environment string
00h don't return string
nonzero return string in 40-byte buffer pointed to by ES:DI
Return: buffer filled with three null-terminated entries:
major operating system
version
hardware type
Return: AH = operating system (00h = MSDOS)
AL = hardware type
00h IBM PC
01h Victor 9000
BH = major shell version
BL = minor shell version
CH = (v3.01+) shell type
00h conventional memory
01h expanded memory
02h extended memory
CL = shell revision number
----------21EA-------------------------------
INT 21 - DoubleDOS - TURN OFF TASK SWITCHING
AH = EAh
Return: task switching turned off
SeeAlso: AH=E9h"DoubleDOS",AH=EBh"DoubleDOS",AH=FAh"DoubleDOS"
SeeAlso: INT FA"DoubleDOS"
----------21EA-------------------------------
INT 21 - OS/286, OS/386 - ALLOCATE HUGE SEGMENT
AH = EAh
???
Return: ???
Note: protected mode only???
SeeAlso: AH=E7h"OS/286",AH=E8h"OS/286",AH=E9h"OS/286"
----------21EB-------------------------------
INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - LOG FILE
AH = EBh
DS:DX -> ASCIZ filename
if function C6h lock mode 01h:
AL = flags
00h log file only
01h lock as well as log file
BP = lock timeout in timer ticks (1/18 second)
0000h = don't wait if file already locked
Return: AL = error code
00h successful
96h no dynamic memory for file
FEh timed out
FFh failed
Desc: add the location and size of the specified file to the log table and
optionally lock the file
Note: this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAlso: AH=BCh"NetWare",AH=CAh,AH=D0h,AH=ECh"NetWare",AH=EDh"NetWare"
----------21EB-------------------------------
INT 21 - DoubleDOS - TURN ON TASK SWITCHING
AH = EBh
Return: task switching turned on
SeeAlso: AH=E9h"DoubleDOS",AH=EAh"DoubleDOS",AH=FBh"DoubleDOS"
SeeAlso: INT FB"DoubleDOS"
----------21EB00-----------------------------
INT 21 - OS/386 VMM - GET A PAGE TABLE ENTRY BY LINEAR ADDRESS
AX = EB00h
???
Return: ???
Note: protected mode only???
SeeAlso: AX=EB02h,AX=EB04h,INT 31/AX=0506h
----------21EB02-----------------------------
INT 21 - OS/386 VMM - GET A PAGE TABLE ENTRY BY 16-BIT SEGMENT:OFFSET
AX = EB02h
???
Return: ???
Note: protected mode only???
SeeAlso: AX=EB00h,AX=EB04h
----------21EB03-----------------------------
INT 21 - OS/386 VMM - FREE MAPPED PAGES
AX = EB03h
???
Return: ???
Note: protected mode only???
SeeAlso: AX=EB05h,INT 31/AX=0801h
----------21EB04-----------------------------
INT 21 - OS/386 VMM - GET A PAGE TABLE ENTRY BY 32-BIT SEGMENT:OFFSET
AX = EB04h
???
Return: ???
Note: protected mode only???
SeeAlso: AX=EB00h,AX=EB02h
----------21EB05-----------------------------
INT 21 - OS/386 VMM - MAP PAGES
AX = EB05h
???
Return: ???
Note: protected mode only???
SeeAlso: AX=EB03h,INT 31/AX=0800h
----------21EB06-----------------------------
INT 21 - OS/386 VMM - LOCK PAGES IN MEMORY
AX = EB06h
???
Return: ???
Note: protected mode only???
SeeAlso: AX=EB07h,INT 31/AX=0600h
----------21EB07-----------------------------
INT 21 - OS/386 VMM - UNLOCK MEMORY PAGES
AX = EB07h
???
Return: ???
Note: protected mode only???
SeeAlso: AX=EB06h,INT 31/AX=0601h
----------21EC-------------------------------
INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - RELEASE FILE
AH = ECh
DS:DX -> ASCIZ filename
Return: AL = status
00h successful
FFh file not found
Desc: unlock the specified file but retain it in the log table
Note: this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAlso: AH=CDh,AH=EBh"NetWare",AH=EDh"NetWare"
----------21EC-------------------------------
INT 21 - DoubleDOS - GET VIRTUAL SCREEN ADDRESS
AH = ECh
Return: ES = segment of virtual screen
Notes: screen address can change if task-switching is on!!
identical to AH=FCh
SeeAlso: INT 10/AH=FEh,AH=FCh"DoubleDOS",INT FC"DoubleDOS"
----------21EC-------------------------------
INT 21 - OS/286, OS/386 - BLOCK TRANSFER
AH = ECh
???
Return: ???
----------21EC59-----------------------------
INT 21 - VIRUS - "Terror" - INSTALLATION CHECK
AX = EC59h
Return: BP = EC59h if resident
SeeAlso: AH=E7h"VIRUS",AH=EEh"VIRUS"
----------21ED-------------------------------
INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - CLEAR FILE
AH = EDh
DS:DX -> ASCIZ filename
Return: AL = status
00h successful
FFh no files found
Desc: unlock the file and remove it from the log table
Note: this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAlso: AH=CBh"NetWare",AH=CEh,AH=CFh,AH=EBh"NetWare",AH=ECh"NetWare"
----------21ED-------------------------------
INT 21 - OS/286, OS/386 - GET SEGMENT OR WINDOW DESCRIPTOR
AH = EDh
???
Return: ???
Note: protected mode only???
SeeAlso: AH=E9h"OS/286"
----------21EE-------------------------------
INT 21 - Novell NetWare - CONNECTION SERVICES - GET PHYSICAL STATION ADDRESS
AH = EEh
Return: CX:BX:AX = six-byte physical address
Note: this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAlso: AH=E3h/SF=13h
----------21EE-------------------------------
INT 21 - DoubleDOS - GIVE AWAY TIME TO OTHER TASKS
AH = EEh
AL = number of 55ms time slices to give away
Return: returns after giving away time slices
SeeAlso: AH=FEh"DoubleDOS",INT FE"DoubleDOS"
----------21EE-------------------------------
INT 21 - VIRUS - "Jerusalem-G", "Pregnant" - INSTALLATION CHECK
AH = EEh
Return: AX = 0300h if "Jerusalem-G" resident
AL = 05h if "Pregnant" resident
SeeAlso: AH=DDh"VIRUS",AX=EC59h,AH=F0h"VIRUS"
----------21EF00-----------------------------
INT 21 - Novell NetWare - WORKSTATION - GET DRIVE HANDLE TABLE
AX = EF00h
Return: ES:SI -> network shell's 32-byte drive handle table
AX = 0000h
Notes: this function is supported by Advanced NetWare 1.0+
each byte in the drive handle table contains the directory handle for
the corresponding drive, or 00h if not mapped to a directory
SeeAlso: AX=EF01h,AX=EF02h,AX=EF03h,AX=EF04h
----------21EF01-----------------------------
INT 21 - Novell NetWare - WORKSTATION - GET DRIVE FLAG TABLE
AX = EF01h
Return: ES:SI -> network shell's 32-byte drive flag table (see below)
AX = 0000h
Notes: this function is supported by Advanced NetWare 1.0+
each byte in the drive flag table corresponds to a drive
SeeAlso: AX=EF00h,AX=EF02h,AX=EF03h
Values in drive flag table:
00h drive is not mapped
01h permanent network drive
02h temporary network drive
80h mapped to local drive
81h local drive used as permanent network drive
82h local drive used as temporary network drive
----------21EF02-----------------------------
INT 21 - Novell NetWare - WORKSTATION - GET DRIVE CONNECTION ID
AX = EF02h
Return: ES:SI -> network shell's 32-byte drive conection ID table
AX = 0000h
Notes: this function is supported by Advanced NetWare 1.0+
each byte in the connection ID table corresponds to a drive and
contains either the connection ID (1-8) of the server for that drive
or 00h if the drive is not mapped to a file server
SeeAlso: AX=EF01h,AX=EF03h,AX=F002h
----------21EF03-----------------------------
INT 21 - Novell NetWare - WORKSTATION - GET CONNECTION ID
AX = EF03h
Return: ES:SI -> network shell's connection ID table (see below)
AX = 0000h
Note: this function is supported by Advanced NetWare 1.0+
SeeAlso: AX=EF00h,AX=EF02h,AX=EF04h,AX=F002h
Format of connection ID table [one entry of eight-element array]:
Offset Size Description
00h BYTE in use flag
E0h AES temporary
F8h IPX in critical section
FAh processing
FBh holding
FCh AES waiting
FDh waiting
FEh receiving
FFh sending
01h BYTE order number assigned to server (1-8)
02h DWORD file server's network address (big-endian)
06h 6 BYTEs file server's node address (big-endian)
0Ch WORD socket number (big-endian)
0Eh WORD base receive timeout in clock ticks (big-endian)
10h 6 BYTEs preferred routing node (big-endian)
16h BYTE packet sequence number
17h BYTE connection number (FFh = no connection)
18h BYTE connection status (00h if active)
19h WORD maximum receive timeout in clock ticks (big-endian)
1Bh 5 BYTEs reserved
----------21EF04-----------------------------
INT 21 - Novell NetWare - WORKSTATION - GET FILE SERVER NAME
AX = EF04h
Return: ES:SI -> network shell's file server name table (see below)
AX = 0000h
Notes: this function is supported by Advanced NetWare 1.0+
the name table consists of eight 48-byte entries, each consisting of
an ASCIZ server name for the corresponding entry in the connection
ID table
SeeAlso: AX=EF03h
----------21F0-------------------------------
INT 21 - DoubleDOS - MENU CONTROL
AH = F0h
AL = subfunction
01h exchange tasks
73h resume invisible job if suspended
74h kill other job
75h suspend invisible job
Note: identical to AH=E0h
SeeAlso: AH=E0h"DoubleDOS"
----------21F0-------------------------------
INT 21 - VIRUS - "Frere Jacques" - INSTALLATION CHECK
AH = F0h
Return: AX = 0300h if resident
SeeAlso: AH=EEh"VIRUS",AH=F1h"VIRUS"
----------21F000-----------------------------
INT 21 - Novell NetWare - WORKSTATION - SET PREFERRED CONNECTION ID
AX = F000h
DL = connection ID of prefered file server (1-8) or 00h for none
Notes: this function is supported by Advanced NetWare 1.0+
the preferred connection ID is set to 00h by the shell on EOJ
SeeAlso: AH=D6h,AX=EF03h,AX=F001h,AX=F002h,AX=F005h
----------21F001-----------------------------
INT 21 - Novell NetWare - WORKSTATION - GET PREFERRED CONNECTION ID
AX = F001h
Return: AL = connection ID of preferred file server (1-8), 00h if not set
Notes: this function is supported by Advanced NetWare 1.0+
the preferred connection ID is set to 00h by the shell on EOJ
SeeAlso: AH=D6h,AX=EF03h,AX=F000h,AX=F002h,AX=F005h
----------21F002-----------------------------
INT 21 - Novell NetWare - WORKSTATION - GET DEFAULT CONNECTION ID
AX = F002h
Return: AL = connection ID of current default file server (1-8) (see AX=EF03h)
Note: this function is supported by Advanced NetWare 1.0+
SeeAlso: AX=EF03h,AX=F000h,AX=F004h
----------21F003-----------------------------
INT 21 - Novell NetWare - PRINT SERVICES - GET LPT CAPTURE STATUS
AX = F003h
Return: AH = status
00h not active
FFh active
AL = connection ID (01h-08h)
Note: this function is supported by Advanced NetWare 1.0+
SeeAlso: AX=B800h,AX=B804h,AH=DFh/DL=00h,AH=DFh/DL=04h
----------21F004-----------------------------
INT 21 - Novell NetWare - WORKSTATION - SET PRIMARY CONNECTION ID
AX = F004h
DL = connection ID of primary file server (1-8) or 00h for none
Note: this function is supported by Advanced NetWare 2.0+
SeeAlso: AH=D6h,AX=EF03h,AX=F000h,AX=F002h,AX=F005h
----------21F005-----------------------------
INT 21 - Novell NetWare - WORKSTATION - GET PRIMARY CONNECTION ID
AX = F005h
Return: AL = connection ID of primary file server (1-8), 00h if not set
Notes: this function is supported by Advanced NetWare 2.0+
by default, the primary file server is the one from which the login
script executed; it is set to 00h if the workstation is not logged in
and when it detaches from its primary file server
SeeAlso: AH=D6h,AX=EF03h,AX=F000h,AX=F002h,AX=F004h
----------21F1-------------------------------
INT 21 - Novell NetWare - CONNECTION SERVICES - FILE SERVER CONNECTION
AH = F1h
AL = subfunction
00h attach to file server
DL = preferred file server (01h-08h)
01h detach from file server
DL = connection ID
02h logout from file server
DL = connection ID
Return: AL = status
00h successful
F8h already attached to server
F9h connection table full
FAh no more server slots
FCh unknown file server
FEh server bindery locked
FFh no response from server, or connection does not exist
Note: these functions are supported by Advanced NetWare 1.0+
SeeAlso: AH=D7h"NetWare",AH=E3h/SF=14h
----------21F1-------------------------------
INT 21 - DoubleDOS - CLEAR KEYBOARD BUFFER FOR CURRENT JOB
AH = F1h
SeeAlso: AH=E1h"DoubleDOS",AH=F2h"DoubleDOS",AH=F3h"DoubleDOS"
SeeAlso: AH=F8h"DoubleDOS"
----------21F1-------------------------------
INT 21 - VIRUS - "F1-337" - ???
AH = F1h
???
Return: ???
SeeAlso: AH=F0h"VIRUS",AX=F2AAh
----------21F2-------------------------------
INT 21 - Novell NetWare v3.01+ shell interface - MULTIPLEXOR
AH = F2h
AL = function
15h broadcast services (see AH=E1h"NetWare")
16h file/directory services (see AH=E2h"NetWare")
17h connection control (see AH=E3h"NetWare")
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (contents vary by function)
ES:DI -> reply buffer (contents vary by function)
Return: AL = status
reply buffer filled as appropriate for function
Note: this is a multiplexor providing a "raw" interface to the underlying
Netware Core Protocol. Many functions which were accessed via a
separate AH function in older versions can also be accessed here
(the function number in AL is added to CCh to get the old function
number which is desired), but some NetWare 3.x calls appear to be
available only here.
SeeAlso: AX=F244h
----------21F2-------------------------------
INT 21 - DoubleDOS - SEND CHARACTER TO KEYBOARD BUFFER OF OTHER JOB
AH = F2h
AL = character
Return: AL = 00h successful
01h buffer full (128 characters)
SeeAlso: AH=E2h"DoubleDOS",AH=F1h"DoubleDOS",AH=F3h"DoubleDOS"
SeeAlso: AH=F8h"DoubleDOS"
----------21F244-----------------------------
INT 21 - Novell NetWare - FILE SERVICES - ERASE FILES
AX = F244h
DS:SI -> request buffer (see below)
ES:DI -> reply buffer (ignored???)
Return: AL = status
00h successful
98h nonexistent volume
9Bh invaid directory handle
9Ch invalid path
FFh no files found
Note: this function only marks the file for deletion; use AH=E2h/SF=CEh to
actually delete all marked files
SeeAlso: AH=13h,AH=41h,AH=E2h/SF=0Bh,AH=E3h/SF=CEh
Format of request buffer:
Offset Size Description
00h BYTE directory handle
01h BYTE search attributes (see AX=4301h)
02h BYTE length of filespec
03h N BYTEs ASCIZ filespec (may include wildcards)
----------21F2AA-----------------------------
INT 21 - VIRUS - "PcVrsDs" - INSTALLATION CHECK
AX = F2AAh
Return: AH = AAh if resident
SeeAlso: AH=F1h"VIRUS",AH=F3h"VIRUS"
----------21F3-------------------------------
INT 21 - Novell NetWare - FILE SERVICES - FILE SERVER FILE COPY
AH = F3h
ES:DI -> request buffer (see below)
Return: AL = status/error code
CX:DX = number of bytes copied
Notes: this function is supported by Advanced NetWare 2.0+
both source and destination must be on the same file server
SeeAlso: AH=3Ch,AH=3Fh
Format of request buffer:
Offset Size Description
00h WORD source file handle (as returned by AH=3Ch or AH=3Dh)
02h WORD destination file handle
04h DWORD starting offset in source
08h DWORD starting offset in destination
0Ch DWORD number of bytes to copy
----------21F3-------------------------------
INT 21 - DoubleDOS - ADD CHARACTER TO KEYBOARD BUFFER OF CURRENT JOB
AH = F3h
AL = character
Return: AL = 00h successful
01h buffer full (128 characters)
SeeAlso: AH=E3h"DoubleDOS",AH=F1h"DoubleDOS",AH=F2h"DoubleDOS"
SeeAlso: AH=F8h"DoubleDOS"
----------21F3-------------------------------
INT 21 - VIRUS - "Carfield" - INSTALLATION CHECK
AH = F3h
Return: AX = 0400h if resident
SeeAlso: AH=D5h"Carfield",AX=F2AAh,AH=F7h"VIRUS"
----------21F400-----------------------------
INT 21 - DoubleDOS - INSTALLATION CHECK/PROGRAM STATUS
AX = F400h
Return: AL = 00h if DoubleDOS not present
= 01h if running in visible DoubleDOS partition
= 02h if running in the invisible DoubleDOS partition
SeeAlso: AX=E400h,AH=F5h"DoubleDOS"
----------21F5-------------------------------
INT 21 - DoubleDOS - OTHER PROGRAM STATUS
AH = F5h
Return: AL = 00h no program in other partition
= 01h program in other partition is running
= 02h program in other partition is suspended
SeeAlso: AH=E5h"DoubleDOS",AX=F400h"DoubleDOS"
----------21F7-------------------------------
INT 21 - VIRUS - "GP1" - INSTALLATION CHECK
AH = F7h
Return: AX = 0300h if resident
SeeAlso: AH=F0h"VIRUS",AH=FBh"VIRUS"
----------21F8-------------------------------
INT 21 - DOS v2.11 - SET OEM INT 21 HANDLER
AH = F8h
DS:DX -> OEM INT 21 handler for functions F9h to FFh
FFFFh:FFFFh disables OEM handler
Notes: this function is supported by Toshiba T1000 ROM MSDOS 2.11
calls to AH=F9h through AH=FFH will return AL=00h if no handler set
handler is called with all registers exactly as set by caller, and
should exit with IRET
SeeAlso: AH=F9h"OEM"
----------21F8-------------------------------
INT 21 - DoubleDOS - SET/RESET KEYBOARD CONTROL FLAGS
AH = F8h
AL = 00h set flags for this program
= 01h set flags for other program
DX = keyboard control flags (bit set enables, cleared disables)
bit 0: menu
bit 1: exchange
bit 2: entire keyboard enable/disable
bit 3: Ctrl-C
bit 4: Ctrl-PrtSc
bit 5: Alt/Erase
bit 6: Ctrl-Break
bit 7: Ctrl-NumLock
bit 8: shift-PrtSc
bit 9-13: undefined
bit 14: cancel key (clear keyboard buffer)
bit 15: suspend key
Return: DX = previous flags
Notes: disabling Ctrl-PrtSc will allow the program to intercept the keystroke;
disabling any of the other keystrokes disables them completely
identical to AH=E8h
SeeAlso: AH=E8h"DoubleDOS",AH=F1h"DoubleDOS",AH=F2h"DoubleDOS"
SeeAlso: AH=F3h"DoubleDOS"
----------21F9-------------------------------
INT 21 - DOS v2.11 - OEM FUNCTION
AH = F9h
SeeAlso: AH=F8h"OEM",AH=FAh"OEM"
----------21F9-------------------------------
INT 21 - DoubleDOS - SET TIMESHARING PRIORITY
AH = F9h
AL = 00h visible program gets 70%, invisible gets 30% (default)
= 01h visible program gets 50%, invisible gets 50%
= 02h visible program gets 30%, invisible gets 70%
= 03h Top program gets 70%, bottom program gets 30%
= 04h Top program gets 30%, bottom program gets 70%
= 05h get current priority
Return: AL = priority setting
Note: identical to AH=E9h
SeeAlso: AH=E9h"DoubleDOS",AH=FAh"DoubleDOS",AH=FBh"DoubleDOS"
----------21FA-------------------------------
INT 21 - DOS v2.11 - OEM FUNCTION
AH = FAh
SeeAlso: AH=F8h"OEM",AH=F9h"OEM",AH=FBh"OEM"
----------21FA-------------------------------
INT 21 - DoubleDOS - TURN OFF TASK SWITCHING
AH = FAh
Return: task switching turned off
SeeAlso: AH=EAh"DoubleDOS",AH=F9h"DoubleDOS",AH=FBh"DoubleDOS"
SeeAlso: INT FA"DoubleDOS"
----------21FA--DX5945-----------------------
INT 21 U - PC Tools v7+ VDEFEND, VSAFE, VWATCH - API
AH = FAh
DX = 5945h
AL = function (00h-02h for VDEFEND, 00h-07h for VSAFE and VWATCH)
Return: varies by function
Note: this API is identical to the API on INT 13/AH=FAh and INT 16/AH=FAh,
so it is listed in its entirety only under INT 16/AX=FA00h and
following
SeeAlso: INT 13/AX=FA00h,INT 16/AX=FA00h
----------21FB-------------------------------
INT 21 - DOS v2.11 - OEM FUNCTION
AH = FBh
SeeAlso: AH=F8h"OEM",AH=FAh"OEM",AH=FCh"OEM"
----------21FB-------------------------------
INT 21 - DoubleDOS - TURN ON TASK SWITCHING
AH = FBh
Return: task switching turned on
SeeAlso: AH=EBh"DoubleDOS",AH=F9h"DoubleDOS",AH=FAh"DoubleDOS"
SeeAlso: INT FB"DoubleDOS"
----------21FB-------------------------------
INT 21 - VIRUS - "Cinderella" - INSTALLATION CHECK
AH = FBh
Return: AH = 00h if resident
SeeAlso: AH=F7h"VIRUS",AX=FB0Ah
----------21FB0A-----------------------------
INT 21 - VIRUS - "dBASE" - INSTALLATION CHECK
AX = FB0Ah
Return: AX = 0AFBh if resident
SeeAlso: AH=FBh"VIRUS",AH=FCh"VIRUS"
----------21FC-------------------------------
INT 21 - DOS v2.11 - OEM FUNCTION
AH = FCh
SeeAlso: AH=F8h"OEM",AH=FBh"OEM",AH=FDh"OEM"
----------21FC-------------------------------
INT 21 - DoubleDOS - GET VIRTUAL SCREEN ADDRESS
AH = FCh
Return: ES = segment of virtual screen
Notes: screen address can change if task-switching is on!!
identical to AH=ECh
SeeAlso: AH=ECh"DoubleDOS",INT FC"DoubleDOS"
----------21FC-------------------------------
INT 21 - VIRUS - "Troi" - INSTALLATION CHECK
AH = FCh
Return: AL = A5h if resident
SeeAlso: AH=FB0Ah"VIRUS",AH=FDh"VIRUS"
----------21FD-------------------------------
INT 21 - DOS v2.11 - OEM FUNCTION
AH = FDh
SeeAlso: AH=F8h"OEM",AH=FCh"OEM",AH=FEh"DOS"
----------21FD-------------------------------
INT 21 - VIRUS - "Border" - INSTALLATION CHECK
AH = FDh
Return: AH = 13h if resident
SeeAlso: AH=FCh"VIRUS",AH=FEh"VIRUS"
----------21FE-------------------------------
INT 21 - DOS v2.11 - OEM FUNCTION
AH = FEh
SeeAlso: AH=F8h"OEM",AH=FDh"OEM",AH=FFh"OEM"
----------21FE-------------------------------
INT 21 - DoubleDOS - GIVE AWAY TIME TO OTHER TASKS
AH = FEh
AL = number of 55ms time slices to give away
Return: returns after giving away time slices
SeeAlso: AH=EEh"DoubleDOS",INT FE"DoubleDOS"
----------21FE-------------------------------
INT 21 - VIRUS - "483" - INSTALLATION CHECK
AH = FEh
Return: AH = 00h if resident
SeeAlso: AH=FDh"VIRUS",AX=FE01h
----------21FE01-----------------------------
INT 21 - VIRUS - "Flip" - INSTALLATION CHECK
AX = FE01h
Return: AX = 01FEh if resident
SeeAlso: AH=FEh"VIRUS",AX=FE02h
----------21FE02-----------------------------
INT 21 - VIRUS - "2468"/"Tequila" - INSTALLATION CHECK
AX = FE02h
Return: AX = 01FDh if resident
SeeAlso: AX=FE01h,AX=FEDCh"VIRUS"
----------21FEDC-----------------------------
INT 21 - PCMag PCMANAGE/DCOMPRES - INSTALLATION CHECK
AX = FEDCh
Return: AX = CDEFh if installed
SeeAlso: AH=DCh
----------21FEDC-----------------------------
INT 21 - VIRUS - "Black Monday" - INSTALLATION CHECK
AX = FEDCh
Return: AL = DCh if resident
SeeAlso: AX=FE02h,AH=FFh"VIRUS"
----------21FF-------------------------------
INT 21 - DOS v2.11 - OEM FUNCTION
AH = FFh
SeeAlso: AH=F8h"OEM",AH=FEh"OEM"
----------21FF-------------------------------
INT 21 - CED (Command EDitor) - INSTALLABLE COMMANDS
AH = FFH
AL = subfunction
00h add installable command
BL = mode - bit 0 = 1 callable from DOS prompt
bit 1 = 1 callable from application
DS:SI -> CR-terminated command name
ES:DI -> FAR routine entry point
01h remove installable command
DS:SI -> CR-terminated command name
02h reserved, may be used to test for CED installation
Return: CF clear if successful
CF set on error
AX = 01h invalid function
02h command not found (subfunction 01h only)
08h insufficient memory (subfunction 00h only)
0Eh bad data (subfunction 00h only)
AH = FFh if CED not installed
Note: CED is a shareware DOS command-line enhancer by Christopher J. Dunford
SeeAlso: AX=0A00h
----------21FF-------------------------------
INT 21 - DJ GO32.EXE 80386+ DOS extender - DOS EXTENSIONS
AH = FFh
AL = function
01h create file
02h open file
03h get file statistics
04h get time of day
05h set time of day
06h stat
07h system
SeeAlso: INT 10/AH=FFh"GO32"
----------21FF-------------------------------
INT 21 - DOSED.COM - INSTALLATION CHECK
AH = FFh
DS:SI -> "DOSED"
ES = 0000h
Return: ES:DI -> "DOSED" if installed
Note: DOSED is a free DOS commandline editor/history buffer by Sverre H.
Huseby
----------21FF-------------------------------
INT 21 - Topware Network Operating System - ???
AH = FFh
???
Return: ???
SeeAlso: INT 2F/AX=FF00h
----------21FF-------------------------------
INT 21 - VIRUS - "Sunday", "Tumen 0.5", "Hero" - INSTALLATION CHECK
AH = FFh
Return: AH = 00h if "Tumen 0.5" or "Hero" resident
AX = 0400h if "Sunday" resident
SeeAlso: AX=FEDCh"VIRUS",AX=FF0Fh
----------21FF-------------------------------
INT 21 UP - Rational Systems DOS/4GW - API
AH = FFh
DH = function (00h-17h) (see also separate entries below)
DL = subfunction or argument
Return: CF clear if valid function number
AX = status???
CF set if invalid function
SeeAlso: INT 15/AX=BFDCh
----------21FF--DH02-------------------------
INT 21 UP - Rational Systems DOS/4GW - SET ???
AH = FFh
DH = 02h
DL = ???
Return: CF clear
----------21FF--DH05-------------------------
INT 21 UP - Rational Systems DOS/4GW - ???
AH = FFh
DH = 05h
BX = ???
Return: ???
----------21FF--DH06-------------------------
INT 21 UP - Rational Systems DOS/4GW - ???
AH = FFh
DH = 06h
BX = ???
Return: ???
----------21FF--DH07-------------------------
INT 21 UP - Rational Systems DOS/4GW - ???
AH = FFh
DH = 07h
BX = ???
Return: ???
----------21FF--DH08-------------------------
INT 21 UP - Rational Systems DOS/4GW - ???
AH = FFh
DH = 08h
BX = ???
CX = ???
ES = ???
Return: ???
----------21FF--DH09-------------------------
INT 21 UP - Rational Systems DOS/4GW - GET ???
AH = FFh
DH = 09h
Return: ES:BX -> ???
----------21FF--DH0A-------------------------
INT 21 UP - Rational Systems DOS/4GW - ???
AH = FFh
DH = 0Ah
AL = ???
BX = ???
CX = ???
Return: ES = ??? or 0000h
----------21FF--DH0B-------------------------
INT 21 UP - Rational Systems DOS/4GW - ???
AH = FFh
DH = 0Bh
AL = ???
BX = ???
CX = ???
Return: ???
----------21FF--DH0C-------------------------
INT 21 UP - Rational Systems DOS/4GW - GET/SET ???
AH = FFh
DH = 0Ch
DL = ??? (00h or 01h)
Return: CF clear if successful
AL = previous value of ???
CF set on error (DL out of range)
AX = FFFFh
----------21FF--DH0D-------------------------
INT 21 UP - Rational Systems DOS/4GW - ???
AH = FFh
DH = 0Dh
???
Return: ???
----------21FF--DH0E-------------------------
INT 21 UP - Rational Systems DOS/4GW - ???
AH = FFh
DH = 0Eh
Return: DX:AX -> XBRK structure (see INT 15/AX=BF02h)
BX = ???
CX = ???
SeeAlso: INT 15/AX=BF02h
----------21FF--DH0F-------------------------
INT 21 UP - Rational Systems DOS/4GW - ???
AH = FFh
DH = 0Fh
???
Return: ???
----------21FF--DH10-------------------------
INT 21 UP - Rational Systems DOS/4GW - ???
AH = FFh
DH = 10h
AL = ???
BX = ???
CX = ???
DI = ???
SI = ???
Return: ???
Note: among other things, frees two memory blocks via INT 21/AH=49h
----------21FF--DH11-------------------------
INT 21 UP - Rational Systems DOS/4GW - NOP
AH = FFh
DH = 11h
----------21FF--DH12-------------------------
INT 21 UP - Rational Systems DOS/4GW - EXCHANGE ??? POINTERS
AH = FFh
DH = 12h
DS:SI -> new ???
ES:DI -> new ???
Return: DS:SI -> previous ???
ES:DI -> previous ???
----------21FF--DH13-------------------------
INT 21 UP - Rational Systems DOS/4GW - ???
AH = FFh
DH = 13h
AL = ???
ES = ???
Return: ???
----------21FF--DH14-------------------------
INT 21 UP - Rational Systems DOS/4GW - ???
AH = FFh
DH = 14h
BX = ???
CX = ???
Return: CF clear
AX = ???
DX = ???
----------21FF--DH15-------------------------
INT 21 UP - Rational Systems DOS/4GW - GET ??? FUNCTIONS
AH = FFh
DH = 15h
Return: CF clear
DX:AX -> FAR function for ???
CX:BX -> FAR function for ???
SI:DI -> FAR function for ???
----------21FF--DH16-------------------------
INT 21 UP - Rational Systems DOS/4GW - GET ???
AH = FFh
DH = 16h
Return: AX = ???
----------21FF--DH17-------------------------
INT 21 UP - Rational Systems DOS/4GW - ???
AH = FFH
DH = 17h
AL = ???
DL = ???
Return: ???
----------21FF00DX0078-----------------------
INT 21 - Rational Systems DOS/4G - INSTALLATION CHECK
AX = FF00h
DX = 0078h
Return: AL <> 00h if installed
GS = segment of kernel if nonzero
SeeAlso: INT 15/AX=BF02h
----------21FF0F-----------------------------
INT 21 - FLU_SHOT+ v1.83 - INSTALLATION CHECK
AX = FF0Fh
Return: AX = 0101h if resident
Notes: FLU_SHOT+ is an antivirus/antitrojan program by Ross M. Greenberg and
Software Concepts Design
the "PSQR/1720" virus calls this function to determine whether
FLU_SHOT+ is present
SeeAlso: AH=FFh"VIRUS",AX=FF10h
----------21FF10-----------------------------
INT 21 - VIRUS - "Twins" - INSTALLATION CHECK
AX = FF10h
Return: AL = 07h if resident
SeeAlso: AX=FF0Fh,AX=FFFEh
----------21FFFE-----------------------------
INT 21 - VIRUS - "08/15"/"Many Fingers" - INSTALLATION CHECK
AX = FFFEh
Return: AX = 0815h if resident
SeeAlso: AX=FF10h,AX=FFFFh
----------21FFFF-----------------------------
INT 21 - VIRUS - "Ontario", "Year 1992"/"B1M92" - INSTALLATION CHECK
AX = FFFFh
Return: AX = 0000h if "Ontario" resident
AX = 1992h if "Year 1992"/"B1M92" resident
SeeAlso: AX=FF0Fh,AX=FFFFh/CX=0000h,INT 6B"VIRUS"
----------21FFFFCX0000-----------------------
INT 21 - VIRUS - "Revenge" - INSTALLATION CHECK
AX = FFFFh
CX = 0000h
Return: CX = 0006h if resident
SeeAlso: AX=FFFFh,INT 6B"VIRUS"
----------22---------------------------------
INT 22 - DOS 1+ - PROGRAM TERMINATION ADDRESS
Desc: this vector specifies the address of the routine which is to be given
control after a program is terminated; it should never be called
directly, since it does not point at an interrupt handler
Notes: this vector is restored from the DWORD at offset 0Ah in the PSP during
termination, and then a FAR JMP is performed to the address in INT 22
normally points at the instruction immediately following INT 21/AH=4Bh
call which loaded the current program
SeeAlso: INT 20,INT 21/AH=00h,INT 21/AH=31h,INT 21/AH=4Ch
---------------------------------------------
INT 22 - COMTROL HOSTESS i/ISA DEBUGGER - CHANGE FIRMWARE DEBUGGING PORT
AL = new firmware debugging port
Return: ???
SeeAlso: INT 21"COMTROL HOSTESS",INT 23"COMTROL HOSTESS"
----------23---------------------------------
INT 23 - DOS 1+ - CONTROL-C/CONTROL-BREAK HANDLER
---DOS 1.x---
Return: AH = 00h abort program
if all registers preserved, restart DOS call
---DOS 2+---
CF clear
Return: all registers preserved
return via RETF or RETF 2 with CF set
DOS will abort program with errorlevel 0
else (RETF/RETF 2 with CF clear or IRET)
interrupted DOS call is restarted
Notes: this interrupt is invoked whenever DOS detects a ^C or ^Break; it
should never be called directly
MSDOS 1.25 also invokes INT 23 on a divide overflow (INT 00)
DOS remembers the stack pointer before calling INT 23, and if it is
not the same on return, pops and discards the top word; this is what
permits a return with RETF as well as IRET or RETF 2
any DOS call may safely be made within the INT 23 handler, although
the handler must to check for a recursive invocation if it does
call DOS
SeeAlso: INT 1B
---------------------------------------------
INT 23 - COMTROL HOSTESS i/ISA DEBUGGER - GET CONFIGURATION INFORMATION
AL = query type
00h get old config map
Return: AX = old config map
01h get dual-ported RAM map
Return: BX:AX = dual-ported RAM map
02h get SCC port map
Return: BX:AX = SCC port map
SeeAlso: INT 22"COMTROL HOSTESS",INT 26"COMTROL HOSTESS"
----------24---------------------------------
INT 24 - DOS 1+ - CRITICAL ERROR HANDLER
Note: invoked when a critical (usually hardware) error is encountered; should
never be called directly
SeeAlso: INT 21/AH=95h
Critical error handler is invoked with:
AH = type and processing flags
bit 7 clear = disk I/O error
set = -- if block device, bad FAT image in memory
-- if char device, error code in DI
bit 6 unused
bit 5 = 1 if Ignore allowed, 0 if not (DOS 3+)
bit 4 = 1 if Retry allowed, 0 if not (DOS 3+)
bit 3 = 1 if Fail allowed, 0 if not (DOS 3+)
bit 2 \ disk area of error 00 = DOS area 01 = FAT
bit 1 / 10 = root dir 11 = data area
bit 0 = 1 if write, 0 if read
AL = drive number if AH bit 7 clear
BP:SI -> device driver header (BP:[SI+4] bit 15 set if char device)
DI low byte contains error code if AH bit 7 set
00h write-protection violation attempted
01h unknown unit for driver
02h drive not ready
03h unknown command given to driver
04h data error (bad CRC)
05h bad device driver request structure length
06h seek error
07h unknown media type
08h sector not found
09h printer out of paper
0Ah write fault
0Bh read fault
0Ch general failure
0Dh (DOS 3+) sharing violation
0Eh (DOS 3+) lock violation
0Fh invalid disk change
10h (DOS 3+) FCB unavailable
11h (DOS 3+) sharing buffer overflow
12h (DOS 4+) code page mismatch
13h (DOS 4+) out of input
14h (DOS 4+) insufficient disk space
STACK: DWORD return address for INT 24 call
WORD flags pushed by INT 24
WORD original AX on entry to INT 21
WORD BX
WORD CX
WORD DX
WORD SI
WORD DI
WORD BP
WORD DS
WORD ES
DWORD return address for INT 21 call
WORD flags pushed by INT 21
Handler must return:
AL = action code
00h ignore error and continue processing request
01h retry operation
02h terminate program through the equivalent of INT 21/AH=4Ch
(INT 20h for DOS 1.x)
03h fail system call in progress
SS,SP,DS,ES,BX,CX,DX preserved
Notes: the only DOS calls the handler may make are INT 21/AH=01h-0Ch,30h,59h
if the handler returns to the application by popping the stack, DOS
will be in an unstable state until the first call with AH > 0Ch
for DOS 3.1+, IGNORE (AL=00h) is turned into FAIL (AL=03h) on network
critical errors
if IGNORE specified but not allowed, it is turned into FAIL
if RETRY specified but not allowed, it is turned into FAIL
if FAIL specified but not allowed, it is turned into ABORT
(DOS 3+) if a critical error occurs inside the critical error handler,
the DOS call is automatically failed
----------25---------------------------------
INT 25 - DOS 1+ - ABSOLUTE DISK READ (except partitions > 32M)
AL = drive number (00h = A:, 01h = B:, etc)
CX = number of sectors to read
DX = starting logical sector number (0000h - highest sector on drive)
DS:BX -> buffer for data
Return: CF clear if successful
CF set on error
AH = status
80h device failed to respond (timeout)
40h seek operation failed
20h controller failed
10h data error (bad CRC)
08h DMA failure
04h requested sector not found
03h write-protected disk (INT 26 only)
02h bad address mark
01h bad command
AL = error code (same as passed to INT 24 in DI)
may destroy all other registers except segment registers
Notes: original flags are left on stack, and must be popped by caller
this call bypasses the DOS filesystem
BUG: DOS 3.1 through 3.3 set the word at ES:[BP+1Eh] to FFFFh if AL is an
invalid drive number
SeeAlso: INT 13/AH=02h,INT 26
----------25---------------------------------
INT 25 - DOS 3.31+ - ABSOLUTE DISK READ (>32M hard-disk partition)
AL = drive number (0=A, 1=B, etc)
CX = FFFFh
DS:BX -> disk read packet (see below)
Return: same as above
Notes: partition is potentially >32M (and requires this form of the call) if
bit 1 of device attribute word in device driver is set
original flags are left on stack, and must be removed by caller
this call bypasses the DOS filesystem
SeeAlso: INT 13/AH=02h,INT 26
Format of disk read packet:
Offset Size Description
00h DWORD sector number
04h WORD number of sectors to read
06h DWORD transfer address
----------25CDCD-----------------------------
INT 25 - Stacker - GET DEVICE DRIVER ADDRESS
AX = CDCDh
DS:BX -> buffer for address (see below)
CX = 0001h
DX = 0000h
Return: AX = CDCDh if Stacker installed
DS:BX buffer filled
Format of driver address buffer:
Offset Size Description
00h WORD signature CDCDh
02h WORD ??? 0001h
04h DWORD pointer to start of Stacker device driver
Format of device driver:
Offset Size Description
00h WORD signature A55Ah
02h WORD Stacker version * 64h
04h WORD offset of volume-specific information offset table
(list of WORDs, one per drive, containing offsets to various
information)
06h 56 BYTEs n/a
3Eh BYTE volume number, set after INT 21/AX=4404h
(use to index into volume-specific info offset table)
3Fh 19 BYTEs n/a
52h 4 BYTEs ASCII string "SWAP"
56h 26 BYTEs drive mapping table (one byte for each drive A: through Z:)
Format of Stacker boot record:
Offset Size Description
1F0h 8 BYTEs Stacker signature (first byte is CDh)
1F8h DWORD pointer to start of Stacker device driver
1FCh WORD Stacker volume number
1FEh WORD ???
----------25--FFSI4358-----------------------
INT 25 - PC-CACHE.SYS - INSTALLATION CHECK
AL = FFh
SI = 4358h
Return: SI = 6378h if installed
CX = segment of device driver PC-CACHE.SYS
DX = version (major in DH, minor in DL)
Note: PC-CACHE.SYS is a small device driver used by PC-Cache v5.x to obtain
access to certain disk drivers for devices such as Bernoulli drives
SeeAlso: INT 13/AH=A0h
----------26---------------------------------
INT 26 - DOS 1+ - ABSOLUTE DISK WRITE (except partitions > 32M)
AL = drive number (00h = A:, 01h = B:, etc)
CX = number of sectors to write
DX = starting logical sector number (0000h - highest sector on drive)
DS:BX -> data to write
Return: CF clear if successful
CF set on error
AH = status
80h device failed to respond (timeout)
40h seek operation failed
20h controller failed
10h data error (bad CRC)
08h DMA failure
04h requested sector not found
03h write-protected disk (INT 26 only)
02h bad address mark
01h bad command
AL = error code (same as passed to INT 24 in DI)
may destroy all other registers except segment registers
Notes: original flags are left on stack, and must be popped by caller
this call bypasses the DOS filesystem
BUG: DOS 3.1 through 3.3 set the word at ES:[BP+1Eh] to FFFFh if AL is an
invalid drive number
SeeAlso: INT 13/AH=03h,INT 25
----------26---------------------------------
INT 26 - DOS 3.31+ - ABSOLUTE DISK WRITE (>32M hard-disk partition)
AL = drive number (0=A, 1=B, etc)
CX = FFFFh
DS:BX -> disk write packet (see below)
Return: same as above
Notes: partition is potentially >32M (and requires this form of the call) if
bit 1 of device attribute word in device driver is set
original flags are left on stack, and must be removed by caller
this call bypasses the DOS filesystem
SeeAlso: INT 13/AH=03h,INT 25
Format of disk write packet:
Offset Size Description
00h DWORD sector number
04h WORD number of sectors to read
06h DWORD transfer address
---------------------------------------------
INT 26 - COMTROL HOSTESS i/ISA DEBUGGER - ENTER/EXIT EXTENDED ADDRESSING MODE
???
Return: ???
SeeAlso: INT 23"COMTROL HOSTESS",INT 27"COMTROL HOSTESS"
----------27---------------------------------
INT 27 - DOS 1+ - TERMINATE AND STAY RESIDENT
DX = number of bytes to keep resident (max FFF0h)
CS = segment of PSP
Return: never
Notes: this is an obsolete call
INT 22, INT 23, and INT 24 are restored from the PSP
does not close any open files
the minimum number of bytes which will remain resident is 110h for
DOS 2.x and 60h for DOS 3+; there is no minimum for DOS 1.x, which
implements this service in COMMAND.COM rather than the DOS kernel
SeeAlso: INT 21/AH=31h
---------------------------------------------
INT 27 - COMTROL HOSTESS i/ISA DEBUGGER - INVOKE REMOTE TURBO DEBUGGER KERNEL
???
Return: ???
Desc: invoke a copy of the remote Turbo Debugger kernel on the Hostess i
controller
SeeAlso: INT 20"COMTROL HOSTESS",INT 26"COMTROL HOSTESS"
----------28---------------------------------
INT 28 - DOS 2+ - DOS IDLE INTERRUPT
Invoked each time one of the DOS character input functions loops while
waiting for input. Since a DOS call is in progress even though DOS is
actually idle during such input waits, hooking this function is necessary
to allow a TSR to perform DOS calls while the foreground program is
waiting for user input. The INT 28h handler may invoke any INT 21 function
except functions 00h through 0Ch. Under DOS 2.x, the critical error flag
(the byte immediately after the InDOS flag) must be set in order to call
DOS functions 50h/51h without destroying the DOS stacks.
Notes: calls to INT 21/AH=3Fh,40h may not use a handle which refers to CON
at the time of the call, the InDOS flag (see INT 21/AH=34h) is normally
set to 01h; if larger, DOS is truly busy and should not be reentered
the default handler is an IRET instruction
supported in OS/2 compatibility box
SeeAlso: INT 21/AH=34h,INT 2A/AH=84h
----------29---------------------------------
INT 29 C - DOS 2+ - FAST CONSOLE OUTPUT
AL = character to display
Return: nothing
Notes: automatically called when writing to a device with bit 4 of its device
driver header set (see also INT 21/AH=52h)
COMMAND.COM v3.2 and v3.3 compare the INT 29 vector against the INT 20
vector and assume that ANSI.SYS is installed if the segment is larger
the default handler under DOS 2.x and 3.x simply calls INT 10/AH=0Eh
the default handler under DESQview 2.2 understands the <Esc>[2J
screen-clearing sequence, calls INT 10/AH=0Eh for all others
SeeAlso: INT 79
----------2A00-------------------------------
INT 2A - NETWORK (Microsoft, LANtastic) - INSTALLATION CHECK
AH = 00h
Return: AH <> 00h if installed
CF set if NetWare v2.15 NetBIOS emulator installed
SeeAlso: INT 5C
----------2A0000-----------------------------
INT 2A - AT&T Starlan Extended NetBIOS (var length names) - INSTALLATION CHECK
AX = 0000h
Return: AH = DDh
SeeAlso: INT 5B
----------2A01-------------------------------
INT 2A - NETWORK (Microsoft,LANtastic) - EXECUTE NETBIOS REQUEST,NO ERROR RETRY
AH = 01h
ES:BX -> NCB (see INT 5C)
Return: AL = NetBIOS error code
AH = 00h if no error
= 01h on error
SeeAlso: AH=04h,AX=0500h,INT 5B,INT 5C"NetBIOS"
----------2A02-------------------------------
INT 2A - NETWORK (Microsoft) - SET NET PRINTER MODE
AH = 02h
???
Return: ???
----------2A0300-----------------------------
INT 2A - NETWORK (Microsoft,LANtastic) - CHECK DIRECT I/O
AX = 0300h
DS:SI -> ASCIZ device name (may be full path or only drive specifier--
must include the colon)
Return: CF clear if direct physical addressing (INT 13,INT 25) permissible
CF set if access via files only
Notes: do not use direct disk accesses if this function returns CF set or the
device is redirected (INT 21/AX=5F02h)
may take some time to execute
called by DOS kernel on INT 25 and INT 26
SeeAlso: INT 13,INT 25,INT 26,INT 21/AX=5F02h
----------2A04-------------------------------
INT 2A - NETWORK (Microsoft,LANtastic) - EXECUTE NetBIOS REQUEST
AH = 04h
AL = error retry
00h automatically retry request on errors 09h, 12h, and 21h
01h no retry
ES:BX -> Network Control Block (see INT 5C"NetBIOS")
Return: AX = 0000h if successful
AH = 01h on error
AL = error code
Notes: invokes either INT 5B or INT 5C as appropriate
NetWare 2.15 NetBIOS emulator returns CF clear if succesful, set on err
SeeAlso: AH=01h,AX=0500h,INT 5B,INT 5C"NetBIOS"
----------2A0500-----------------------------
INT 2A - NETWORK (Microsoft,LANtastic) - GET NETWORK RESOURCE AVAILABILITY
AX = 0500h
Return: AX reserved
BX = number of network names available
CX = number of network control blocks available
DX = number of network sessions available
SeeAlso: AH=01h,AH=04h,INT 5C"NetBIOS"
----------2A06-------------------------------
INT 2A - NETBIOS, LANtastic - NETWORK PRINT-STREAM CONTROL
AH = 06h
AL = 01h set concatenation mode (all printer output put in one job)
02h set truncation mode (default)
printer open/close starts new print job
03h flush printer output and start new print job
Return: CF set on error
AX = error code
CF clear if successful
Notes: subfunction 03h is equivalent to Ctrl/Alt/keypad-*
LANtastic v4.x no longer supports this call
SeeAlso: INT 21/AX=5D08h,INT 21/AX=5D09h,INT 2F/AX=1125h
----------2A2001-----------------------------
INT 2A - MS Networks or NETBIOS - ???
AX = 2001h
???
Return: ???
Note: intercepted by DESQview 2.x
----------2A2002-----------------------------
INT 2A - NETWORK - ???
AX = 2002h
???
Return: ???
Note: called by MSDOS 3.30-5.00 APPEND
----------2A2003-----------------------------
INT 2A - NETWORK - ???
AX = 2003h
???
Return: ???
Note: called by MSDOS 3.30-5.00 APPEND
----------2A7802-----------------------------
INT 2A - NETWORK - PC LAN PROG v1.31+ - GET LOGGED ON USER NAME
AX = 7802h
ES:DI -> 8-byte buffer to be filled
Return: AL = 00h if no user logged on to Extended Services
AL <> 00h if user logged on to Extended Services
buffer at ES:DI filled with name, padded to 8 chars with blanks.
----------2A80-------------------------------
INT 2A C - NETWORK - BEGIN DOS CRITICAL SECTION
AH = 80h
AL = critical section number (00h-0Fh)
01h DOS kernel, SHARE.EXE
apparently for maintaining the integrity of DOS/SHARE/NET
data structures
02h DOS kernel
ensures that no multitasking occurs while DOS is calling an
installable device driver
05h DOS 4.x only IFSFUNC
06h DOS 4.x only IFSFUNC
08h ASSIGN.COM
0Ah MSCDEX
Notes: normally hooked to avoid interrupting a critical section, rather than
called
the handler should ensure that none of the critical sections are
reentered, usually by suspending a task which attempts to reenter
an active critical section
the DOS kernel does not invoke critical sections 01h and 02h unless it
is patched. DOS 3.1 through 3.31 contain a zero-terminated list of
words beginning at offset 02C3h in the IBMDOS segment; each word
contains the offset within the IBMDOS segment of a byte which must
be changed from C3h to 50h to enable use of critical sections.
SeeAlso: AH=81h,AH=82h,AH=87h,INT 21/AX=5D06h,INT 21/AX=5D0Bh
----------2A81-------------------------------
INT 2A C - NETWORK - END DOS CRITICAL SECTION
AH = 81h
AL = critical section number (00h-0Fh) (see AH=80h)
Notes: normally hooked rather than called
the handler should reawaken any tasks which were suspended due to an
attempt to enter the specified critical section
SeeAlso: AH=80h,AH=82h,AH=87h
----------2A82-------------------------------
INT 2A C - NETWORK - END DOS CRITICAL SECTIONS 0 THROUGH 7
AH = 82h
Notes: called by the INT 21h function dispatcher for function 0 and functions
greater than 0Ch except 59h, and on process termination
the handler should reawaken any tasks which were suspended due to an
attempt to enter one of the critical sections 0 through 7
SeeAlso: AH=81h
----------2A84-------------------------------
INT 2A C - Microsoft Networks - KEYBOARD BUSY LOOP
AH = 84h
Note: similar to DOS's INT 28h, called from inside the DOS keyboard input
loop to allow network to process requests
SeeAlso: INT 28
----------2A87-------------------------------
!!!
INT 2A C - PRINT??? - CRITICAL SECTION
AH = 87h
AL = start/end
00h start
01h end
Note: called by PRINT.COM
SeeAlso: AH=80h,AH=81h
----------2A89-------------------------------
INT 2A - Network - ???
AH = 89h
AL = ??? (ASSIGN uses 08h)
???
Return: ???
----------2A90-------------------------------
INT 2A - IBM PC 3270 EMULATION PROGRAM - ???
AH = 90h
???
Return: ???
Note: the LANtastic redirector and SERVER.EXE use this function with AL=01h,
03h-07h,0Ch-11h
----------2AC2-------------------------------
INT 2A - Network - ???
AH = C2h
AL = subfunction
07h ???
08h ???
BX = 0001h
???
Return: ???
Note: called by DOS 3.30-5.00 APPEND
----------2AFF90-----------------------------
INT 2A - PC/TCP PREDIR.EXE - ???
AX = FF90h
Return: AX = ???
Note: PREDIR.EXE is the network printer redirector included as part of the
PC/TCP system by FTP Software, Inc.
----------2AFF91-----------------------------
INT 2A - PC/TCP PREDIR.EXE - ???
AX = FF91h
BX = ???
Return: AX = status???
----------2AFF92-----------------------------
INT 2A - PC/TCP PREDIR.EXE - INSTALLATION CHECK
AX = FF92h
Return: AX = 0000h if installed
BX = redirected printer port (FFFFh if no printers redirected)
CX = version (CH = major, CL = minor)
Note: PREDIR.EXE is the network printer redirector included as part of the
PC/TCP system by FTP Software, Inc.
----------2AFF93-----------------------------
INT 2A - PC/TCP PREDIR.EXE - ???
AX = FF93h
Return: AX = ???
----------2AFF94-----------------------------
INT 2A - PC/TCP PREDIR.EXE - ???
AX = FF94h
BX = ???
CX = ???
DX = ???
Return: AX = ???
Note: PREDIR.EXE is the network printer redirector included as part of the
PC/TCP system by FTP Software, Inc.
----------2AFF95-----------------------------
INT 2A - PC/TCP PREDIR.EXE - GET CONFIGURATION STRINGS
AX = FF95h
CX = what to get
0000h ??? (returned pointer to "C:\COMMAND.COM")
0001h spooling program
0002h ???
0003h spool file name
0004h swap file name
Return: AX = status
0000h successful
BX:DX -> ASCIZ configuration string
----------2AFF96-----------------------------
INT 2A - PC/TCP PREDIR.EXE - SET PRINT JOB TERMINATION CONFIGURATION
AX = FF96h
CX = what to set
0000h ???
0001h print-on-hotkey state
0002h print-on-exit state
0003h print job timeout in clock ticks
0004h print-on-EOF state
BX = new value (0000h disabled, 0001h enabled except for timeout)
Return: AX = ???
SeeAlso: AX=FF97h
Note: PREDIR.EXE is the network printer redirector included as part of the
PC/TCP system by FTP Software, Inc.
----------2AFF97-----------------------------
INT 2A - PC/TCP PREDIR.EXE - GET PRINT JOB TERMINATION CONFIGURATION
AX = FF97h
CX = what to get
0000h ???
0001h print-on-hotkey state
0002h print-on-exit state
0003h print job timeout in clock ticks
0004h print-on-EOF state
Return: AX = status
0000h successful
BX = old value (0000h disabled, 0001 enabled except for timeout)
SeeAlso: AX=FF96h
----------2B---------------------------------
INT 2B - DOS 2+ - RESERVED
Note: this vector is not used in DOS versions <= 5.00, and points at an IRET
----------2C---------------------------------
INT 2C - DOS 2+ - RESERVED
Note: this vector is not used in DOS versions <= 5.00, and points at an IRET
----------2C---------------------------------
INT 2C - STARLITE architecture - KERNEL API
Note: STARLITE is an architecture by General Software for a series of MS-DOS
compatible operating systems (OEM DOS, NETWORK DOS, and SMP DOS) to
be released in 1991. The interrupt number is subject to change
before the actual release.
----------2D---------------------------------
INT 2D - DOS 2+ - RESERVED
Note: this vector is not used in DOS versions <= 5.00, and points at an IRET
----------2D---------------------------------
INT 2D - ALTERNATE MULTIPLEX INTERRUPT SPECIFICATION (AMIS) [v3.5]
AH = multiplex number
AL = function
00h installation check
Return: AL = 00h if free
AL = FFh if multiplex number in use
CX = binary version number (CH = major, CL = minor)
DX:DI -> signature string (see below) identifying
the program using the multiplex number
01h get entry point
Return: AL = 00h if all API calls via INT 2D
AL = FFh if entry point supported
DX:BX -> entry point for bypassing interrupt chain
02h uninstall
DX:BX = return address for successful uninstall (may be
ignored by TSR)
Return: AL = status
00h not implemented
01h unsuccessful
02h can not uninstall yet, will do so when able
03h safe to remove, but no resident uninstaller
(TSR still enabled)
BX = segment of memory block with resident code
04h safe to remove, but no resident uninstaller
(TSR now disabled)
BX = segment of memory block with resident code
05h not safe to remove now, try again later
FFh successful
return at DX:BX with AX destroyed if successful and
TSR honors specific return address
03h request pop-up
Return: AL = status
00h not implemented or TSR is not a pop-up
01h can not pop up at this time, try again later
02h can not pop up yet, will do so when able
03h already popped up
04h unable to pop up, user intervention required
BX = standard reason code
0000h unknown failure
0001h interrupt chain passes through memory
which must be swapped out to pop up
0002h swap-in failed
CX = application's reason code if nonzero
FFh TSR popped up and was exited by user
BX = return value
0000h no return value
0001h TSR unloaded
0002h-00FFh reserved
0100h-FFFFh application-dependent
04h determine chained interrupts
BL = interrupt number (except 2Dh)
Return: AL = status
00h not implemented
01h (obsolete) unable to determine
02h (obsolete) interrupt hooked
03h (obsolete) interrupt hooked, address returned
DX:BX -> TSR's interrupt BL handler
04h list of hooked interrupts returned
DX:BX -> interrupt hook list (see below)
FFh interrupt not hooked
Notes: since INT 2D is known to be hooked, the resident code
need not test for BL=2Dh (to minimize its size), and
the return value is therefore undefined in that case.
BL is ignored if the TSR returns AL=04h; in that case,
the caller needs to scan the return list rather than
making additional calls to this function. If the
return is not 00h or 04h, then the caller must cycle
through the remaining interrupt numbers it wishes to
check.
return values 01h thru 03h are disparaged and will be
removed from the next version of this specification;
they are included for compatibility with version 3.3,
though they were probably never used in any
implementation
05h get hotkeys
Return: AL = status
00h not implemented
FFh supported
DX:BX -> hotkey list (see below)
06h-0Fh reserved for future enhancements
Return: AL = 00h (not implemented)
other application-dependent
Notes: programs should not use fixed multiplex numbers; rather, a program
should scan all multiplex numbers from 00h to FFh, remembering the
first unused multiplex in case the program is not yet installed.
For multiplex numbers which are in use, the program should compare
the first 16 bytes of the signature string to determine whether it
is already installed on that multiplex number. If not previously
installed, it should use the first free multiplex number.
functions other than 00h are not valid unless a program is installed
on the selected multiplex number
to be considered fully compliant with version 3.5 of the specification,
programs must implement at least functions 00h, 02h (no resident
uninstall code required), and 04h (return value 04h). TSRs that
provide hotkeys with which the user can activate them must also
implement function 05h. The absolute minimum fully-compliant
implementation has an overhead of 64 bytes (80 bytes with function
05h) plus 22 bytes per hooked interrupt (for the interrupt sharing
protocol header and hook list entry).
the signature string and description may be used by memory mappers
to display the installed programs
users of this proposal should adhere to the IBM interrupt sharing
protocol (see below), which will permit removal of TSRs in
arbitrary order and interrupt handler reordering. All TSRs
following this proposal should be removable, though they need not
keep the code for removing themselves resident; it is acceptable
for a separate program to perform the removal.
A sample implementation including example TSRs and utility programs
may be found in a separate package distributed as AMISLnnn.ZIP
(AMISL090.ZIP as of this writing).
Please let me know if you choose to follow this proposal. The
signature and a list of the private API calls you use would be
appreciated, as well.
SeeAlso: INT 2F
Format of signature string:
Offset Size Description
00h 8 BYTEs blank-padded manufacturer's name (possibly abbreviated)
08h 8 BYTEs blank-padded product name
10h 64 BYTEs ASCIZ product description (optional, may be a single 00h)
Note: it is not necessary to reserve a full 64 bytes for the description,
just enough to store the actual ASCIZ string
Format of interrupt hook list [array]:
Offset Size Description
00h BYTE interrupt number (last entry in array is 2Dh)
01h WORD offset within hook list's segment of the interrupt handler
this will point at the initial short jump of the interrupt
sharing protocol header (see below)
Format of hotkey list:
Offset Size Description
00h BYTE type of hotkey checking
bit 0: checks before chaining INT 09
bit 1: checks after chaining INT 09
bit 2: checks before chaining INT 15/AH=4Fh
bit 3: checks after chaining INT 15/AH=4Fh
bit 4: checks on INT 16/AH=00h,01h,02h
bit 5: checks on INT 16/AH=10h,11h,12h
bits 6,7: reserved (0)
01h BYTE number of hotkeys (may be zero if TSR can disable hotkeys)
02h 6N BYTEs array of hotkey definitions
(one per hotkey, first should be primary hotkey)
Offset Size Description
00h BYTE hotkey scan code (00h/80h if shift states only)
hotkey triggers on release if bit 7 set
01h WORD required shift states (see below)
03h WORD disallowed shift states (see below)
05h BYTE flags
bit 0: hotkey chained before processing
bit 1: hotkey chained after processing
bit 2: others should pass through this hotkey
so that it can be monitored
bit 3: hotkey will not activate if other keys
pressed/released before hotkey press is
completed
bit 4: this key is remapped into some other key
bit 5-7: reserved (0)
Notes: except for bit 7, the shift states correspond exactly to the return
values from INT 16/AH=12h. A set bit in the required states word
indicates that the corresponding shift state must be active when the
hotkey's scan code is received for the hotkey to be recognized; a
clear bit means that the corresponding state may be ignored. A set
bit in the disallowed shift states word indicates that the
corresponding shift state must be inactive.
if bit 2 is set, either control key may be pressed for the hotkey; if
bits 8 and 10 are both set, then both control keys must be pressed.
Similarly for bits 3 and 9/11, as well as 7 and 0/1.
for the disallowed-states word, if one of the "either" bits is set,
then both the corresponding left bit and right bit must be set
examples:
Ctrl-Alt-Del monitoring: 53h 000Ch 0003h 06h
Alt-key tap (DESQview): B8h 0000h 0007h 08h
Shf-Shf-N (NOTE.COM): 31h 0003h 000Ch 00h
Bitmask of shift states:
bit 0: right shift pressed
bit 1: left shift pressed
bit 2: either control key pressed
bit 3: either Alt key pressed
bit 4: ScrollLock active
bit 5: NumLock active
bit 6: CapsLock active
bit 7: either shift key pressed
bit 8: left control key pressed
bit 9: left Alt key pressed
bit 10: right control key pressed
bit 11: right Alt key pressed
bit 12: ScrollLock pressed
bit 13: NumLock pressed
bit 14: CapsLock pressed
bit 15: SysRq key pressed
Format of interrupt sharing protocol interrupt handler entry point:
Offset Size Description
00h 2 BYTEs short jump to actual start of interrupt handler, immediately
following this data block (EBh 10h)
02h DWORD address of next handler in chain
06h WORD signature 424Bh
08h BYTE EOI flag
00h software interrupt or secondary hardware interrupt handler
80h primary hardware interrupt handler (will issue EOI)
09h 2 BYTEs short jump to hardware reset routine
must point at a valid FAR procedure (may be just RETF)
0Bh 7 BYTEs reserved (0)
Signatures known to be in use:
'Crynwr ' 'SPELLER ' TSR spelling-checker
'heathh ' 'Monitor '
'Ralf B ' 'FASTMOUS' example TSR included with sample AMIS library code
'Ralf B ' 'NOLPT n ' example TSR -- turn LPTn into bit-bucket
'Ralf B ' 'NOTE ' example TSR -- popup note-taker
'Ralf B ' 'RBkeyswp' RBkeyswap v3.0+ -- swap Esc/~ and LCtrl/CapsLock keys
'Ralf B ' 'SWITCHAR' example TSR -- add switchar() support removed from DOS5
'Ralf B ' 'VGABLANK' example TSR -- VGA-only screen blanker
'TifaWARE' 'EATMEM ' George A. Theall's public domain memory restrictor for
testing programs (v1.1+)
'RECALL ' public domain commandline editor and history (v1.2+)
'Todd ' 'XPTR2 ' PC-to-Transputer interface by Todd Radel
----------2E---------------------------------
INT 2E - DOS 2+ - PASS COMMAND TO COMMAND INTERPRETER FOR EXECUTION
DS:SI -> commandline to execute (see below)
Return: all registers except CS:IP destroyed
AX = status (4DOS v4.0)
0000h successful
FFFFh error before processing command (not enough memory, etc)
other error number returned by command
Notes: this call allows execution of arbitrary commands (including COMMAND.COM
internal commands) without loading another copy of COMMAND.COM
if COMMAND.COM is the user's command interpreter, the primary copy
executes the command; this allows the master environment to be
modified by issuing a "SET" command, but changes in the master
environment will not become effective until all programs descended
from the primary COMMAND.COM terminate
since COMMAND.COM processes the string as if typed from the keyboard,
the transient portion needs to be present, and the calling program
must ensure that sufficient memory to load the transient portion can
be allocated by DOS if necessary
results are unpredictable if invoked by a program run from a batch file
because this call is not reentrant and COMMAND.COM uses the same
internal variables when processing a batch file
hooked but ignored by 4DOS v3.0 COMMAND.COM replacement unless SHELL2E
has been loaded
the MSDOS 5 Programmer's Reference calls this "Reload Transient"
Format of commandline:
Offset Size Description
00h BYTE length of command string, not counting trailing CR
01h var command string
N BYTE 0Dh (CR)
----------2E----BXE22E-----------------------
INT 2E - 4DOS v2.x-3.03 SHELL2E.COM - UNINSTALL
BX = E22Eh
DS:SI -> zero byte
Return: if successful, SHELL2E terminates itself with INT 21/AH=4Ch
---------------------------------------------
Interrupt List, part 5 of 8
This compilation is Copyright (c) 1989,1990,1991,1992,1993 Ralf Brown
----------2F---------------------------------
INT 2F - Multiplex - NOTES
AH = identifier of program which is to handle the interrupt
00h-7Fh reserved for DOS
B8h-BFh reserved for networks
C0h-FFh reserved for applications
AL is the function code
This is a general mechanism for verifying the presence of a TSR and
communicating with it. When searching for a free identifier code for AH
using the installation check (AL=00h), the calling program should set
BX/CX/DX to 0000h and must not depend on any registers other than CS:IP
and SS:SP to be valid on return, since numerous programs now use additional
registers on input and/or output for the installation check.
Note: Since the multiplex chain is growing so long, and beginning to
experience multiplex number collisions, I am proposing an alternate
multiplex interrupt on INT 2D. If you decide to use the alternate
multiplex, please let me know.
SeeAlso: INT 2D
----------2F---------------------------------
INT 2F - BMB Compuscience Canada Utilities Interface
AH = xx (dynamically assigned based upon a search for a multiplex
number which doesn't answer installed)
AL = 00h installation check
ES:DI = EBEBh:BEBEh
Return: AL = 00h not installed
01h not installed, not OK to install
FFh installed; if ES:DI was EBEBh:BEBEh on entry, ES:DI will point
to a string of the form 'MMMMPPPPPPPPvNNNN' where MMMM is a
short form of the manufacturer's name, PPPPPPPP is a product
name and NNNN is the product's version number
----------2F---------------------------------
INT 2F - Ross Wentworth's Turbo Pascal POPUP LIBRARY
AH = programmer-selected multiplex number
AL = function
00h installation check
Return: AL = FFh if installed
01h get TSR interrupt vectors
Return: DX:AX -> vector table (see below)
02h get TSR code segment
Return: AX = code segment for all interrupt handlers
03h call user exit routine and release TSR's memory
04h get signature string
Return: DX:AX -> counted string containing signature
05h get TSR's INT 2F handler
Return: DX:AX -> INT 2F handler
06h enable/disable TSR
BL = new state (00h disabled, 01h enabled)
07h activate TSR (popup if not disabled)
08h get hotkeys
BL = which hotkey (00h = hotkey 1, 01h = hotkey 2)
Return: AX = hotkey (AH = keyflags, AL = scancode)
09h set hotkey
BL = which hotkey (00h = hotkey 1, 01h = hotkey 2)
CX = new hotkey (CH = keyflags, CL = scancode)
0Ah-1Fh reserved
Format of vector table entry:
Offset Size Description
00h BYTE vector number (00h = end of table)
01h DWORD original vector
05h WORD offset of interrupt handler in TSR's code segment
----------2F---------------------------------
INT 2F - CiriSOFT Spanish University of Valladolid TSR's Interface
AH = xx (dynamically assigned based upon a search for a multiplex
number from C0h to FFh which doesn't answer installed)
AL = 00h installation check
ES:DI = 1492h:1992h
Return: AL = 00h not installed
01h not installed, not OK to install
FFh installed; and if ES:DI was 1492h:1992h on entry, ES:DI will
point to author_name_ver table (see below)
AH = FFh
Note: this interface permits advanced communication with TSRs: it is possible
to make a generic unistall utility, advanced TSR relocator programs
in order to fit fragmented memory areas, etc.
See also: INT 2D"AMIS",INT 2F"Compuscience"
Format of author_name_ver table:
Offset Size Description
-16 WORD segment in which really begins the TSR code (CS in programs
with PSP, XMS upper memory segment if installed as UMB...)
-14 WORD offset in which really begins the TSR code (frecuently 100h
in *.COM programs and 0 in upper memory TSR's).
-12 WORD memory used by TSR (in paragraphs). Knowing the memory area
used by TSR is possible to determine if hooked vectors are
still pointing it (and if it is safe the unistall process).
-10 BYTE characteristics byte
bits 0-2: 000 normal program (with PSP)
001 upper XMS memory block (needed HIMEM.SYS function
to free memory when unistalling)
010 device driver (*.SYS)
011 device driver in EXE format
1xx others (reserved)
bits 3-6 reserved
bit 7 set if extra_table defined and supported
-9 BYTE number of multiplex entry used (redefinition available). Note
that the TSR must be use THIS variable in it's INT 2Fh handler.
-8 WORD offset to vector_area table (see bellow)
-6 WORD offset to extra_area table (see bit 7 in offset -10 and bellow)
-4 4 BYTEs "*##*" (to insure that the TSR verify this agreement)
00h var "AUTHOR:PROGRAM_NAME:VERSION",0 (variable length, this area
is used in order to determine if the TSR is already resident
and it's version code; the ':' char is used as delimiter)
Format of vector_area table:
Offset Size Description
-1 BYTE number of vectors intercepted by TSR
00h BYTE first vector number
01h DWORD first vector pointer before installing the TSR
05h BYTE second vector number
06h DWORD second vector pointer before installing the TSR
. . (and so on) Note that the TSR must be use THIS variables to
invoke previous interrupt handler routines.
Format of extra_area table (needed only to improve relocation feature):
Offset Size Description
00h WORD offset to external_ctrl table (0 if not supported)
02h WORD reserved for future use (0)
Format of external_ctrl table:
Offset Size Description
00h BYTE bit 0: TSR is relocatable (no absolute segment references)
01h WORD offset to a variable which can activate/inhibit the TSR
---And if bit 0 in offset 00h is off:
03h DWORD pointer to ASCIIZ with pathname to executable file which
supports /SR parameter (silent installation & inhibit)
07h DWORD pointer to first variable to initialize on the copy reloaded
from the previous TSR still resident
0Bh DWORD pointer to last variable (all variables packed in one block)
----------2F00-------------------------------
INT 2F U - DOS 2.x PRINT.COM - ???
AH = 00h
???
Return: ???
Notes: DOS 2.x PRINT.COM does not chain to previous INT 2F handler
values in AH other than 00h or 01h cause PRINT to return the number of
files in the queue in AH
SeeAlso: AH=01h
----------2F0080-----------------------------
INT 2F - DOS 3.1+ PRINT.COM - GIVE PRINT A TIME SLICE
AX = 0080h
Return: after PRINT executes
----------2F01-------------------------------
INT 2F U - DOS 2.x PRINT.COM - ???
AH = 01h
???
Return: ???
Notes: DOS 2.x PRINT.COM does not chain to previous INT 2F handler
values in AH other than 00h or 01h cause PRINT to return the number of
files in the queue in AH
SeeAlso: AH=00h
----------2F0100-----------------------------
INT 2F - DOS 3+ PRINT.COM - INSTALLATION CHECK
AX = 0100h
Return: AL = status
00h not installed
01h not installed, but not OK to install
FFh installed
SeeAlso: AX=0101h
----------2F0101-----------------------------
INT 2F - DOS 3+ PRINT.COM - SUBMIT FILE FOR PRINTING
AX = 0101h
DS:DX -> submit packet (see below)
Return: CF clear if successful
AL = 01h added to queue
9Eh now printing
CF set on error
AX = error code (see also INT 21/AH=59h)
01h invalid function
02h file not found
03h path not found
04h out of file handles
05h access denied
08h print queue full
09h spooler busy
0Ch name too long
0Fh invalid drive
SeeAlso: AX=0102h
Format of submit packet:
Offset Size Description
00h BYTE level (must be 00h)
01h DWORD pointer to ASCIZ filename (no wildcards)
----------2F0102-----------------------------
INT 2F - DOS 3+ PRINT.COM - REMOVE FILE FROM PRINT QUEUE
AX = 0102h
DS:DX -> ASCIZ filename (wildcards allowed)
Return: CF clear if successful
CF set on error
AX = error code (see AX=0101h)
SeeAlso: AX=0101h,AX=0103h
----------2F0103-----------------------------
INT 2F - DOS 3+ PRINT.COM - CANCEL ALL FILES IN PRINT QUEUE
AX = 0103h
Return: CF clear if successful
CF set on error
AX = error code (see AX=0101h)
SeeAlso: AX=0102h
----------2F0104-----------------------------
INT 2F - DOS 3+ PRINT.COM - FREEZE PRINT QUEUE TO READ JOB STATUS
AX = 0104h
Return: CF clear if successful
DX = error count
DS:SI -> print queue
CF set on error
AX = error code (see AX=0101h)
Notes: the print queue is an array of 64-byte ASCIZ filenames terminated by
an empty filename; the first name is the file currently being printed
printing is stopped until AX=0105h is called to prevent the queue
from changing while the filenames are being read
SeeAlso: AX=0101h,AX=0105h
----------2F0105-----------------------------
INT 2F - DOS 3+ PRINT.COM - RESTART PRINT QUEUE AFTER STATUS READ
AX = 0105h
Return: CF clear if successful
CF set on error
AX = error code (see AX=0101h)
SeeAlso: AX=0104h
----------2F0106-----------------------------
INT 2F - DOS 3.3+ PRINT.COM - GET PRINTER DEVICE
AX = 0106h
Return: CF set if files in print queue
AX = error code 0008h (queue full)
DS:SI -> device driver header
CF clear if print queue empty
AX = 0000h
Note: documented for DOS 5+, but not documented for prior versions
SeeAlso: AX=0104h
----------2F0200-----------------------------
INT 2F U - PC LAN PROGRAM REDIR/REDIRIFS internal - INSTALLATION CHECK
AX = 0200h
Return: AL = FFh if installed
----------2F0201-----------------------------
INT 2F U - PC LAN PROGRAM REDIR/REDIRIFS internal - ???
AX = 0201h
Return: nothing???
Notes: called by DOS 3.3+ PRINT.COM
AX=0202h appears to be the opposite function
SeeAlso: AX=0202h
----------2F0202-----------------------------
INT 2F U - PC LAN PROGRAM REDIR/REDIRIFS internal - ???
AX = 0202h
???
Return: nothing???
Note: called by DOS 3.3+ PRINT.COM
SeeAlso: AX=0201h
----------2F0203-----------------------------
INT 2F U - PC LAN PROGRAM REDIR/REDIRIFS internal - ???
AX = 0203h
Return: nothing???
Notes: called by DOS 3.3+ PRINT.COM
AX=0204h appears to be the opposite function
SeeAlso: AX=0204h
----------2F0204-----------------------------
INT 2F U - PC LAN PROGRAM REDIR/REDIRIFS internal - ???
AX = 0204h
???
Return: nothing???
Note: called by DOS 3.3 PRINT.COM
----------2F---------------------------------
INT 2F U - PC LAN PROGRAM REDIR/REDIRIFS internal - ???
AX = 02xxh
???
Return: ???
----------2F0500-----------------------------
INT 2F U - DOS 3+ CRITICAL ERROR HANDLER - INSTALLATION CHECK
AX = 0500h
Return: AL = 00h not installed, OK to install
01h not installed, can't install
FFh installed
Note: this set of functions allows a user program to partially or completely
override the default critical error handler's message in COMMAND.COM
SeeAlso: AH=05h,INT 24
----------2F05-------------------------------
INT 2F UC - DOS 3+ CRITICAL ERROR HANDLER - EXPAND ERROR INTO STRING
AH = 05h
---DOS 3.x---
AL = extended error code (not zero)
---DOS 4+ ---
AL = error type
01h DOS extended error code
02h parameter error
BX = error code
Return: CF clear if successful
ES:DI -> ASCIZ error message (read-only)
AL = ???
CF set if error code can't be converted to string
Notes: called at start of COMMAND.COM's default critical error handler if
installed by a user program, allowing partial or complete overriding
of the default error message
subfunction 02h called by many DOS 4 external programs
SeeAlso: AX=122Eh,INT 24
----------2F0600-----------------------------
INT 2F - DOS 3+ ASSIGN - INSTALLATION CHECK
AX = 0600h
Return: AL = status
00h not installed
01h not installed, but not OK to install
FFh installed
Notes: ASSIGN is not a TSR in DR-DOS 5.0; it is internally replaced by SUBST
(see INT 21/AH=52h)
undocumented prior to the release of DOS 5.0
SeeAlso: AX=0601h,INT 21/AH=52h
----------2F0601-----------------------------
INT 2F U - DOS 3+ ASSIGN - GET DRIVE ASSIGNMENT TABLE
AX = 0601h
Return: ES = segment of ASSIGN work area and assignment table
Note: under DOS 3+, the 26 bytes starting at ES:0103h specify which drive
each of A: to Z: is mapped to. Initially set to 01h 02h 03h....
SeeAlso: AX=0600h
----------2F0800-----------------------------
INT 2F U - DRIVER.SYS support - INSTALLATION CHECK
AX = 0800h
Return: AL = 00h not installed, OK to install
01h not installed, not OK to install
FFh installed
Note: supported by DR-DOS 5.0
----------2F0801-----------------------------
INT 2F U - DRIVER.SYS support - ADD NEW BLOCK DEVICE
AX = 0801h
DS:DI -> drive data table (see AX=0803h)
Notes: moves down internal list of drive data tables, copying and modifying
the drive description flags word for tables referencing same physical
drive
data table appended to chain of tables
supported by DR-DOS 5.0
SeeAlso: AX=0803h
----------2F0802-----------------------------
INT 2F U - DRIVER.SYS support - EXECUTE DEVICE DRIVER REQUEST
AX = 0802h
ES:BX -> device driver request header (see below)
Return: request header updated as per requested operation
Notes: supported by DR-DOS 5.0
DOS 3.2 executes this function on any AL value from 02h through F7h
SeeAlso: AX=0800h,AX=0801h,AX=0803h,INT 21/AH=52h,INT 21/AH=99h,INT 21/AH=9Ah
Values for command code:
00h INIT
01h MEDIA CHECK (block devices)
02h BUILD BPB (block devices)
03h IOCTL INPUT
04h INPUT
05h NONDESTRUCTIVE INPUT, NO WAIT (character devices)
06h INPUT STATUS (character devices)
07h INPUT FLUSH (character devices)
08h OUTPUT
09h OUTPUT WITH VERIFY
0Ah OUTPUT STATUS (character devices)
0Bh OUTPUT FLUSH (character devices)
0Ch IOCTL OUTPUT
0Dh (DOS 3+) DEVICE OPEN
0Eh (DOS 3+) DEVICE CLOSE
0Fh (DOS 3+) REMOVABLE MEDIA (block devices)
10h (DOS 3+) OUTPUT UNTIL BUSY (character devices)
11h (European MSDOS 4.0) STOP OUTPUT (console screen drivers only)
12h (European MSDOS 4.0) RESTART OUTPUT (console screen drivers only)
13h (DOS 3.2+) GENERIC IOCTL
14h unused
15h (European MSDOS 4.0) RESET UNCERTAIN MEDIA FLAG
16h unused
17h (DOS 3.2+) GET LOGICAL DEVICE
18h (DOS 3.2+) SET LOGICAL DEVICE
19h (DOS 5.0+) CHECK GENERIC IOCTL SUPPORT
80h (CD-ROM) READ LONG
81h (CD-ROM) reserved
82h (CD-ROM) READ LONG PREFETCH
83h (CD-ROM) SEEK
84h (CD-ROM) PLAY AUDIO
85h (CD-ROM) STOP AUDIO
86h (CD-ROM) WRITE LONG
87h (CD-ROM) WRITE LONG VERIFY
88h (CD-ROM) RESUME AUDIO
Format of device driver request header:
Offset Size Description
00h BYTE length of request header
01h BYTE subunit within device driver
02h BYTE command code (see above)
03h WORD status (filled in by device driver)
bit 15: error
bits 14-11: reserved
bit 10: ??? set by DOS kernel on entry to some driver calls
bit 9: busy
bit 8: done (may be clear on return under European MSDOS 4.0)
bits 7-0: error code if bit 15 set (see below)
---DOS---
05h 4 BYTEs reserved (unused in DOS 2.x and 3.x)
09h DWORD (European MSDOS 4.0 only) pointer to next request header in
device's request queue
(other versions) reserved (unused in DOS 2.x and 3.x)
---STARLITE architecture---
05h DWORD pointer to next request header
09h 4 BYTEs reserved
---command code 00h---
0Dh BYTE (return) number of units
0Eh DWORD (call) pointer to DOS device helper function (see below)
(European MSDOS 4.0 only)
(call) pointer past end of memory available to driver (DOS 5.0)
(return) address of first free byte following driver
12h DWORD (call) pointer to commandline arguments
(return) pointer to BPB array (block drivers) or
0000h:0000h (character drivers)
16h BYTE (DOS 3+) drive number for first unit of block driver (0=A)
---European MSDOS 4.0---
17h DWORD pointer to function to save registers on stack
---DOS 5.0---
17h WORD (return) error-message flag
0001h MSDOS should display error msg on init failure
---command code 01h---
0Dh BYTE media descriptor
0Eh BYTE returned status
00h don't know
01h media has not changed
FFh media has been changed
0Fh DWORD (return, DOS 3+) pointer to previous volume ID if OPEN/CLOSE/RM
bit in device header is set and disk changed
---command code 02h---
0Dh BYTE media descriptor
0Eh DWORD transfer address
-> scratch sector if NON-IBM FORMAT bit in device header set
-> first FAT sector otherwise
12h DWORD pointer to BPB (set by driver) (see INT 21/AH=53h)
---command codes 03h,0Ch--- (see also INT 21/AX=4402h,INT 21/AX=4403h)
0Dh BYTE media descriptor (block devices only)
0Eh DWORD transfer address
12h WORD (call) number of bytes to read/write
(return) actual number of bytes read or written
---command codes 04h,08h,09h---
0Dh BYTE media descriptor (block devices only)
0Eh DWORD transfer address
12h WORD byte count (character devices) or sector count (block devices)
14h WORD starting sector number (block devices only)
16h DWORD (DOS 3+) pointer to volume ID if error 0Fh returned
1Ah DWORD (DOS 4+) 32-bit starting sector number (block devices with
device attribute word bit 1 set only) (see INT 21/AH=52h)
---command code 05h---
0Dh BYTE byte read from device if BUSY bit clear on return
---command codes 06h,07h,0Ah,0Bh,0Dh,0Eh,0Fh---
no further fields
---command code 10h---
0Dh BYTE unused
0Eh DWORD transfer address
12h WORD (call) number of bytes to write
(return) actual number of bytes written
---command codes 11h,12h---
0Dh BYTE reserved
---command code 15h---
no further fields
---command codes 13h,19h---
0Dh BYTE category code
00h unknown
01h COMn:
03h CON
05h LPTn:
07h mouse (European MSDOS 4.0)
08h disk
9Eh (STARLITE) Media Access Control driver
0Eh BYTE function code
00h (STARLITE) MAC Bind request
0Fh WORD copy of DS at time of IOCTL call (apparently unused in DOS 3.3)
SI contents (European MSDOS 4.0)
11h WORD offset of device driver header
DI contents (European MSDOS 4.0)
13h DWORD pointer to parameter block from INT 21/AX=440Ch or AX=440Dh
---command codes 80h,82h---
0Dh BYTE addressing mode
00h HSG (default)
01h Phillips/Sony Red Book
0Eh DWORD transfer address (ignored for command 82h)
12h WORD number of sectors to read
(if 0 for command 82h, request is an advisory seek)
14h DWORD starting sector number
logical sector number in HSG mode
frame/second/minute/unused in Red Book mode
(HSG sector = minute * 4500 + second * 75 + frame - 150)
18h BYTE data read mode
00h cooked (2048 bytes per frame)
01h raw (2352 bytes per frame, including EDC/ECC)
19h BYTE interleave size (number of sectors stored consecutively)
1Ah BYTE interleave skip factor (# sectors between consec portions)
---command code 83h---
0Dh BYTE addressing mode (see above)
0Eh DWORD transfer address (ignored)
12h WORD number of sectors to read (ignored)
14h DWORD starting sector number (see also above)
---command code 84h---
0Dh BYTE addressing mode (see above)
0Eh DWORD starting sector number (see also above)
12h DWORD number of sectors to play
---command codes 85h,88h---
no further fields
---command codes 86h,87h---
0Dh BYTE addressing mode (see above)
0Eh DWORD transfer address (ignored in write mode 0)
12h WORD number of sectors to write
14h DWORD starting sector number (see also above)
18h BYTE write mode
00h mode 0 (write all zeros)
01h mode 1 (default) (2048 bytes per sector)
02h mode 2 form 1 (2048 bytes per sector)
03h mode 2 form 2 (2336 bytes per sector)
19h BYTE interleave size (number of sectors stored consecutively)
1Ah BYTE interleave skip factor (# sectors between consec portions)
Values for error code:
00h write-protect violation
01h unknown unit
02h drive not ready
03h unknown command
04h CRC error
05h bad drive request structure length
06h seek error
07h unknown media
08h sector not found
09h printer out of paper
0Ah write fault
0Bh read fault
0Ch general failure
0Dh reserved
0Eh (CD-ROM) media unavailable
0Fh invalid disk change
Call European MSDOS 4.0 device helper function with:
DL = function
00h "SchedClock" called on each timer tick
AL = tick interval in milliseconds
01h "DevDone" device I/O complete
ES:BX -> request header
Note: must update status word first; may be called from
an interrupt handler
02h "PullRequest" pull next request from queue
DS:SI -> DWORD pointer to start of device's request queue
Return: ZF clear if pending request
ES:BX -> request header
ZF set if no more requests
03h "PullParticular" remove specific request from queue
DS:SI -> DWORD pointer to start of device's request queue
ES:BX -> request header
Return: ZF set if request header not found
04h "PushRequest" push the request onto the queue
DS:SI -> DWORD pointer to start of device's request queue
ES:BX -> request header
interrupts disabled
05h "ConsInputFilter" keyboard input check
AX = character (high byte 00h if PC ASCII character)
Return: ZF set if character should be discarded
ZF clear if character should be handled normally
Note: called by keyboard interrupt handler so DOS can scan
for special input characters
06h "SortRequest" push request in sorted order by starting sector
DS:SI -> DWORD pointer to start of device's request queue
ES:BX -> request header
interrupts disabled
07h "SigEvent" send signal on keyboard event
AH = event identifier
Return: AL,FLAGS destroyed
09h "ProcBlock" block on event
AX:BX = event identifier (typically a pointer)
CX = timeout in ms or 0000h for never
DH = interruptible flag (nonzero if pause may be interrupted)
interrupts disabled
Return: after corresponding ProcRun call
CF clear if event wakeup, set if unusual wakeup
ZF set if timeout wakeup, clear if interrupted
AL = wakeup code, nonzero if unusual wakeup
interrupts enabled
BX,CX,DX destroyed
Note: block process and schedules another to run
0Ah "ProcRun" unblock process
AX:BX = event identifier (typically a pointer)
Return: AX = number of processes awakened
ZF set if no processes awakened
BX,CX,DX destroyed
0Bh "QueueInit" initialize/clear character queue
DS:BX -> character queue structure (see below)
Note: the queue size field must be set before calling
0Dh "QueueWrite" put a character in the queue
DS:BX -> character queue (see below)
AL = character to append to end of queue
Return: ZF set if queue is full
ZF clear if character stored
0Eh "QueueRead" get a character from the queue
DS:BX -> character queue (see below)
Return: ZF set if queue is empty
ZF clear if characters in queue
AL = first character in queue
10h "GetDOSVar" return pointer to DOS variable
AL = index of variable
03h current process ID
BX = index into variable if AL specifies an array
CX = expected length of variable
Return: CF clear if successful
DX:AX -> variable
CF set on error
AX,DX destroyed
BX,CX destroyed
Note: the variables may not be modified
14h "Yield" yield CPU if higher-priority task ready to run
Return: FLAGS destroyed
1Bh "CritEnter" begin system critical section
DS:BX -> semaphore (6 BYTEs, initialized to zero)
Return: AX,BX,CX,DX destroyed
1Ch "CritLeave" end system critical section
DS:BX -> semaphore (6 BYTEs, initialized to zero)
Return: AX,BX,CX,DX destroyed
Note: must be called in the context of the process which
called CritEnter on the semaphore
Note: the DWORD pointing at the request queue must be allocated by the driver
and initialized to 0000h:0000h. It always points at the next request
to be executed
Format of character queue:
Offset Size Description
00h WORD size of queue in bytes
02h WORD index of next character out
04h WORD count of characters in the queue
06h N BYTEs queue buffer
----------2F0803-----------------------------
INT 2F U - DOS 4+ DRIVER.SYS support - GET DRIVE DATA TABLE LIST
AX = 0803h
Return: DS:DI -> first drive data table in list
Note: not available under DR-DOS 5.0
SeeAlso: AX=0801h
Format of DOS 3.30 drive data table:
Offset Size Description
00h DWORD pointer to next table
04h BYTE physical unit number (for INT 13)
05h BYTE logical drive number
06h 19 BYTEs BIOS Parameter Block (see also INT 21/AH=53h)
Offset Size Description
00h WORD bytes per sector
02h BYTE sectors per cluster, FFh if unknown
03h WORD number of reserved sectors
05h BYTE number of FATs
06h WORD number of root dir entries
08h WORD total sectors
0Ah BYTE media descriptor, 00h if unknown
0Bh WORD sectors per FAT
0Dh WORD sectors per track
0Fh WORD number of heads
11h WORD number of hidden sectors
19h BYTE flags
bit 6: 16-bit FAT instead of 12-bit FAT
1Ah WORD number of DEVICE OPEN calls without corresponding DEVICE CLOSE
1Ch 11 BYTEs volume label or "NO NAME " if none (always "NO NAME" for
fixed media)
27h BYTE terminating null for volume label???
28h BYTE device type (see INT 21/AX=440Dh)
29h WORD bit flags describing drive
bit 0: fixed media
bit 1: door lock supported
bit 2: ??? (used in determining BPB to set for INT 21/AX=440Dh)
bit 3: all sectors in a track are the same size
bit 4: physical drive has multiple logical units
bit 5: current logical drive for physical drive
bit 6: ???
bit 7: ???
bit 8: ??? (related to disk change detection)
2Bh WORD number of cylinders
2Dh 19 BYTEs BIOS Parameter Block for highest capacity supported
40h 3 BYTEs ???
43h 9 BYTEs filesystem type???, default = "NO NAME "
(apparently only MSDOS 3.30 fixed media, nulls for removable
media and PCDOS 3.30)
4Ch BYTE least-significant byte of last-accessed cylinder number
---removable media---
4Dh DWORD time of last access in clock ticks (FFFFFFFFh if never)
---fixed media---
4Dh WORD partition (FFFFh = primary, 0001h = extended)
4Fh WORD absolute cylinder number of partition's start on physical
drive (always FFFFh if primary partition)
Format of COMPAQ DOS 3.31 drive data table:
Offset Size Description
00h DWORD pointer to next table
04h BYTE physical unit number (for INT 13)
05h BYTE logical drive number
06h 25 BYTEs BIOS Parameter Block (see DOS 4.0-5.0 drive data table below)
1Fh 6 BYTEs ??? apparently always zeros
25h BYTE flags
bit 6: 16-bit FAT instead of 12-bit FAT
5: large volume???
26h WORD device-open count???
28h 11 BYTEs volume label or "NO NAME " if none (always "NO NAME" for
fixed media)
33h BYTE terminating null for volume label
34h BYTE device type (see INT 21/AX=440Dh)
35h WORD bit flags describing drive
37h WORD number of cylinders
39h 25 BYTEs BIOS parameter block for highest capacity drive supports
52h 6 BYTEs ??? apparently always zeros
58h BYTE least-significant byte of last-accessed cylinder number
---removable media---
59h DWORD time of last access in clock ticks (FFFFFFFFh if never)
---fixed media---
59h WORD partition (FFFFh = primary, 0001h = extended)
5Bh WORD absolute cylinder number of partition's start on physical
drive (always FFFFh if primary partition)
Format of DOS 4.0-5.0 drive data table:
Offset Size Description
00h DWORD pointer to next table
04h BYTE physical unit number (for INT 13)
05h BYTE logical drive number
06h 25 BYTEs BIOS Parameter Block (see also INT 21/AH=53h)
Offset Size Description
00h WORD bytes per sector
02h BYTE sectors per cluster, FFh if unknown
03h WORD number of reserved sectors
05h BYTE number of FATs
06h WORD number of root dir entries
08h WORD total sectors (see offset 15h if zero)
0Ah BYTE media descriptor, 00h if unknown
0Bh WORD sectors per FAT
0Dh WORD sectors per track
0Fh WORD number of heads
11h DWORD number of hidden sectors
15h DWORD total sectors if WORD at 08h is zero
1Fh BYTE flags
bit 6: 16-bit FAT instead of 12-bit
20h 2 BYTEs ???
22h BYTE device type (see INT 21/AX=440Dh)
23h WORD bit flags describing drive
bit 0: fixed media
bit 1: door lock supported
bit 2: ???
bit 3: all sectors in a track are the same size
bit 4: physical drive has multiple logical units
bit 5: current logical drive for physical drive
bit 6: ???
bit 7: ???
bit 8: ???
25h WORD number of cylinders
27h 25 BYTEs BIOS Parameter Block for highest capacity supported
40h 7 BYTEs ???
---removable media---
47h DWORD time of last access in clock ticks (FFFFFFFFh if never)
---fixed media, DOS 4.x---
47h WORD partition (FFFFh = primary, 0001h = extended)
49h WORD absolute cylinder number of partition's start on phys drive
(FFFFh if primary partition)
---fixed media, DOS 5.0---
47h WORD ??? apparently always 0001h
49h WORD absolute cylinder number of partition's start on phys drive
------
4Bh 11 BYTEs volume label or "NO NAME " if none (apparently taken from
extended boot record rather than root directory)
56h BYTE terminating null for volume label???
57h DWORD serial number
5Bh 8 BYTEs filesystem type ("FAT12 " or "FAT16 ")
63h BYTE terminating null for filesystem type???
----------2F1000-----------------------------
INT 2F - SHARE - INSTALLATION CHECK
AX = 1000h
Return: AL = 00h not installed, OK to install
01h not installed, not OK to install
FFh installed
BUGS: values of AL other than 00h put DOS 3.x SHARE into an infinite loop
(08E9: OR AL,AL
08EB: JNZ 08EB) <- the buggy instruction (DOS 3.3)
values of AL other than described here put PCDOS 4.00 into the same
loop (the buggy instructions are the same)
Notes: supported by OS/2 v1.3+ compatibility box, which always returns AL=FFh
if DOS 4.01 SHARE was automatically loaded, file sharing is in an
inactive state (due to the undocumented /NC flag used by the autoload
code) until this call is made
DOS 5.0 chains to the previous handler if AL <> 00h on entry
SeeAlso: AX=1080h,INT 21/AH=52h
----------2F1001-----------------------------
INT 2F U - SuperStor PRO SSTORDRV.SYS - SET ???
AX = 1001h
BX = ???
DX = ???
Program: SuperStor is a disk-compression program by Addstor.
SeeAlso: AX=F800h
----------2F1040-----------------------------
INT 2F U - DOS 4 only SHARE internal - ???
AX = 1040h
???
Return: AL = FFh???
SeeAlso: AX=1000h
----------2F1080-----------------------------
INT 2F U - DOS 4 only SHARE internal - TURN ON FILE SHARING CHECKS
AX = 1080h
Return: AL = status
F0h successful
FFh checking was already on
Note: DOS 4.x SHARE has dual functions: FCB support for large (>32M) media
and file sharing checks. The undocumented commandline flag /NC can
be used to disable the sharing code.
SeeAlso: AX=1000h,AX=1081h
----------2F1081-----------------------------
INT 2F U - DOS 4 only SHARE internal - TURN OFF FILE SHARING CHECKS
AX = 1081h
Return: AL = status
F0h successful
FFh checking was already off
Note: (see AX=1080h)
SeeAlso: AX=1000h,AX=1080h
----------2F10FF-----------------------------
INT 2F U - Multiplex - DR-DOS 5.0 - ???
AX = 10FFh
ES:BX -> ???
Note: sets pointer in kernel
----------2F1100-----------------------------
INT 2F C - NETWORK REDIRECTOR - INSTALLATION CHECK
AX = 1100h
Return: AL = 00h not installed, OK to install
01h not installed, not OK to install
FFh installed
Notes: called by DOS 3.1+ kernel
In DOS 4.x only, the 11xx calls are all in IFSFUNC.EXE, not in the
PC LAN Program redirector; DOS 5.0 moves the calls back into the
redirector
----------2F1100-----------------------------
INT 2F - MSCDEX (MS CD-ROM Extensions) - INSTALLATION CHECK
AX = 1100h
STACK: WORD DADAh
Return: AL = 00h not installed, OK to install
STACK unchanged
= 01h not installed, not OK to install
STACK unchanged
= FFh installed
STACK: WORD ADADh
----------2F1101-----------------------------
INT 2F CU - NETWORK REDIRECTOR - REMOVE REMOTE DIRECTORY
AX = 1101h
SS = DOS DS
SDA first filename pointer -> fully-qualified directory name
SDA CDS pointer -> current directory structure for drive with dir
Return: CF set on error
AX = DOS error code (see INT 21/AH=59h)
CF clear if successful
Note: called by DOS 3.1+ kernel
SeeAlso: AX=1103h,AX=1105h,INT 21/AH=3Ah,INT 21/AH=60h
----------2F1102-----------------------------
INT 2F CU - IFSFUNC.EXE (DOS 4.x only) - REMOVE REMOTE DIRECTORY
AX = 1102h
SS = DOS DS
SDA first filename pointer -> fully-qualified directory name
SDA CDS pointer -> current directory structure for drive with dir
Return: CF set on error
AX = DOS error code (see INT 21/AH=59h)
CF clear if successful
Note: appears to be identical to AX=1101h
SeeAlso: AX=1101h
----------2F1103-----------------------------
INT 2F CU - NETWORK REDIRECTOR - MAKE REMOTE DIRECTORY
AX = 1103h
SS = DOS DS
SDA first filename pointer -> fully-qualified directory name
SDA CDS pointer -> current directory structure for drive with dir
Return: CF set on error
AX = DOS error code (see INT 21/AH=59h)
CF clear if successful
Note: called by DOS 3.1+ kernel
SeeAlso: AX=1101h,AX=1105h,INT 21/AH=39h,INT 21/AH=60h
----------2F1104-----------------------------
INT 2F CU - IFSFUNC.EXE (DOS 4.x only) - MAKE REMOTE DIRECTORY
AX = 1104h
SS = DOS DS
SDA first filename pointer -> fully-qualified directory name
SDA CDS pointer -> current directory structure for drive with dir
Return: CF set on error
AX = DOS error code (see INT 21/AH=59h)
CF clear if successful
Note: appears to be identical to AX=1103h
SeeAlso: AX=1103h
----------2F1105-----------------------------
INT 2F CU - NETWORK REDIRECTOR - CHDIR
AX = 1105h
SS = DOS DS
SDA first filename pointer -> fully-qualified directory name
SDA CDS pointer -> current directory structure for drive with dir
Return: CF set on error
AX = DOS error code (see INT 21/AH=59h)
CF clear if successful
CDS updated with new path
Notes: called by DOS 3.1+ kernel
directory string in CDS should not have a terminating backslash unless
the current directory is the root
SeeAlso: AX=1101h,AX=1103h,INT 21/AH=3Bh,INT 21/AH=60h
----------2F1106-----------------------------
INT 2F CU - NETWORK REDIRECTOR - CLOSE REMOTE FILE
AX = 1106h
ES:DI -> SFT
SFT DPB field -> DPB of drive containing file
Return: CF set on error
AX = DOS error code (see INT 21/AH=59h)
CF clear if successful
SFT updated (redirector must decrement open count, which may be
done with INT 2F/AX=1208h)
Note: called by DOS 3.1+ kernel
SeeAlso: AX=1201h,AX=1208h,AX=1227h,INT 21/AH=3Eh
----------2F1107-----------------------------
INT 2F CU - NETWORK REDIRECTOR - COMMIT REMOTE FILE
AX = 1107h
ES:DI -> SFT
SFT DPB field -> DPB of drive containing file
Return: CF set on error
AX = DOS error code (see INT 21/AH=59h)
CF clear if successful
all buffers for file flushed
directory entry updated
Note: called by DOS 3.1+ kernel
SeeAlso: INT 21/AH=68h,INT 21/AX=5D01h
----------2F1108-----------------------------
INT 2F CU - NETWORK REDIRECTOR - READ FROM REMOTE FILE
AX = 1108h
ES:DI -> SFT
SFT DPB field -> DPB of drive containing file
CX = number of bytes
SS = DOS DS
SDA DTA field -> user buffer
Return: CF set on error
AX = DOS error code (see INT 21/AH=59h)
CF clear if successful
CX = number of bytes read (0000h = end of file)
SFT updated
Note: called by DOS 3.1+ kernel
SeeAlso: AX=1109h,AX=1229h,INT 21/AH=3Fh,INT 21/AX=5D06h
----------2F1109-----------------------------
INT 2F CU - NETWORK REDIRECTOR - WRITE TO REMOTE FILE
AX = 1109h
ES:DI -> SFT
SFT DPB field -> DPB of drive containing file
CX = number of bytes
SS = DOS DS
SDA DTA field -> user buffer
Return: CF set on error
AX = DOS error code (see INT 21/AH=59h)
CF clear if successful
CX = number of bytes written
SFT updated
Note: called by DOS 3.1+ kernel
SeeAlso: AX=1107h,AX=1108h,INT 21/AH=40h,INT 21/AX=5D06h
----------2F110A-----------------------------
INT 2F CU - NETWORK REDIRECTOR (DOS 3.x only) - LOCK REGION OF FILE
AX = 110Ah
BX = file handle
CX:DX = starting offset
SI = high word of size
STACK: WORD low word of size
ES:DI -> SFT
SFT DPB field -> DPB of drive containing file
SS = DOS DS
Return: CF set on error
AL = DOS error code (see INT 21/AH=59h)
STACK unchanged
Notes: called by DOS 3.10-3.31 kernel
the redirector is expected to resolve lock conflicts
SeeAlso: AX=110Bh,INT 21/AH=5Ch
----------2F110A-----------------------------
INT 2F CU - NETWORK REDIRECTOR (DOS 4+) - LOCK/UNLOCK REGION OF FILE
AX = 110Ah
BL = function
00h lock
01h unlock
DS:DX -> parameter block (see below)
ES:DI -> SFT
SFT DPB field -> DPB of drive containing file
SS = DOS DS
Return: CF set on error
AL = DOS error code (see INT 21/AH=59h)
Notes: called by DOS 4.0+ kernel
the redirector is expected to resolve lock conflicts
SeeAlso: AX=110Bh,INT 21/AH=5Ch
Format of parameter block:
Offset Size Description
00h DWORD start offset
04h DWORD size of region
----------2F110B-----------------------------
INT 2F CU - NETWORK REDIRECTOR (DOS 3.x only) - UNLOCK REGION OF FILE
AX = 110Bh
BX = file handle
CX:DX = starting offset
SI = high word of size
STACK: WORD low word of size
ES:DI -> SFT for file
SFT DPB field -> DPB of drive containing file
Return: CF set on error
AL = DOS error code (see INT 21/AH=59h)
STACK unchanged
Note: called by DOS 3.1-3.31 kernel; DOS 4.0+ calls AX=110Ah instead
SeeAlso: AX=110Ah,INT 21/AH=5Ch
----------2F110C-----------------------------
INT 2F CU - NETWORK REDIRECTOR - GET DISK SPACE
AX = 110Ch
ES:DI -> current directory structure for desired drive
Return: AL = sectors per cluster
AH = media ID byte
BX = total clusters
CX = bytes per sector
DX = number of available clusters
Note: called by DOS 3.1+ kernel
SeeAlso: INT 21/AH=36h
----------2F110D-----------------------------
INT 2F CU - IFSFUNC.EXE (DOS 4.x only) - ???
AX = 110Dh
SDA first filename pointer -> name of file
???
Return: ???
Note: appears to be similar to AX=110Fh
SeeAlso: AX=110Fh
----------2F110E-----------------------------
INT 2F CU - NETWORK REDIRECTOR - SET REMOTE FILE'S ATTRIBUTES
AX = 110Eh
SS = DOS DS
SDA first filename pointer -> fully-qualified name of file
SDA CDS pointer -> current directory structure for drive with file
STACK: WORD new file attributes
Return: CF set on error
AX = DOS error code (see INT 21/AH=59h)
CF clear if successful
STACK unchanged
Note: called by DOS 3.1+ kernel
SeeAlso: AX=110Fh,INT 21/AX=4301h,INT 21/AH=60h
----------2F110F-----------------------------
INT 2F CU - NETWORK REDIRECTOR - GET REMOTE FILE'S ATTRIBUTES AND SIZE
AX = 110Fh
SS = DOS DS
SDA first filename pointer -> fully-qualified name of file
SDA CDS pointer -> current directory structure for drive with file
Return: CF set on error
AX = DOS error code (see INT 21/AH=59h)
CF clear if successful
AX = file attributes
BX:DI = file size
Note: called by DOS 3.1+ kernel
SeeAlso: AX=110Eh,INT 21/AX=4300h,INT 21/AH=60h
----------2F1110-----------------------------
INT 2F CU - IFSFUNC.EXE (DOS 4.x only) - ???
AX = 1110h
SDA first filename pointer -> name of file
???
Return: ???
Note: appears to be similar to AX=110Eh
SeeAlso: AX=110Eh
----------2F1111-----------------------------
INT 2F CU - NETWORK REDIRECTOR - RENAME REMOTE FILE
AX = 1111h
SS = DS = DOS DS
SDA first filename pointer = offset of fully-qualified old name
SDA second filename pointer = offset of fully-qualified new name
SDA CDS pointer -> current directory structure for drive with file
Return: CF set on error
AX = DOS error code (see INT 21/AH=59h)
CF clear if successful
Note: called by DOS 3.1+ kernel
SeeAlso: INT 21/AH=56h,INT 21/AH=60h
----------2F1112-----------------------------
INT 2F CU - IFSFUNC.EXE (DOS 4.x only) - ???
AX = 1112h
SS = DS = DOS DS
SDA first filename pointer -> name of file
???
Return: ???
SeeAlso: AX=1111h
----------2F1113-----------------------------
INT 2F CU - NETWORK REDIRECTOR - DELETE REMOTE FILE
AX = 1113h
SS = DS = DOS DS
SDA first filename pointer -> fully-qualified filename in DOS DS
SDA CDS pointer -> current directory structure for drive with file
Return: CF set on error
AX = DOS error code (see INT 21/AH=59h)
CF clear if successful
Notes: called by DOS 3.1+ kernel
the filespec may contain wildcards
SeeAlso: INT 21/AH=41h,INT 21/AH=60h
----------2F1114-----------------------------
INT 2F CU - IFSFUNC.EXE (DOS 4.x only) - ???
AX = 1114h
SDA first filename pointer -> name of file
???
Return: ???
SeeAlso: AX=1113h
----------2F1115-----------------------------
INT 2F CU - IFSFUNC.EXE (DOS 4.x only) - ???
AX = 1115h
SS = DOS DS
ES:DI -> SFT ???
???
Return: ???
SeeAlso: AX=112Eh
----------2F1116-----------------------------
INT 2F CU - NETWORK REDIRECTOR - OPEN EXISTING REMOTE FILE
AX = 1116h
ES:DI -> uninitialized SFT
SS = DOS DS
SDA first filename pointer -> fully-qualified name of file to open
STACK: WORD file open mode (see INT 21/AH=3Dh)
Return: CF set on error
AX = DOS error code (see INT 21/AH=59h)
CF clear if successful
SFT filled (except handle count, which DOS manages itself)
STACK unchanged
Note: called by DOS 3.1+ kernel
SeeAlso: AX=1106h,AX=1117h,AX=1118h,AX=112Eh,INT 21/AH=3Dh,INT 21/AH=60h
----------2F1117-----------------------------
INT 2F CU - NETWORK REDIRECTOR - CREATE/TRUNCATE REMOTE FILE
AX = 1117h
ES:DI -> uninitialized SFT
SS = DOS DS
SDA first filename pointer -> fully-qualified name of file to open
SDA CDS pointer -> current directory structure for drive with file
STACK: WORD file creation mode
low byte = file attributes
high byte = 00h normal create, 01h create new file
Return: CF set on error
AX = DOS error code (see INT 21/AH=59h)
CF clear if successful
SFT filled (except handle count, which DOS manages itself)
STACK unchanged
Note: called by DOS 3.1+ kernel
SeeAlso: AX=1106h,AX=1116h,AX=1118h,AX=112Eh,INT 21/AH=3Ch,INT 21/AH=60h
----------2F1118-----------------------------
INT 2F CU - NETWORK REDIRECTOR - CREATE/TRUNCATE FILE WITHOUT CDS
AX = 1118h
ES:DI -> uninitialized SFT
SS = DOS DS
SDA first filename pointer -> fully-qualified name of file
STACK: WORD file creation mode
low byte = file attributes
high byte = 00h normal create, 01h create new file
Return: ???
STACK unchanged
Note: called by DOS 3.1+ kernel when creating a file on a drive for which the
SDA CDS pointer has offset FFFFh
SeeAlso: AX=1106h,AX=1116h,AX=1117h,AX=112Eh,INT 21/AH=60h
----------2F1119-----------------------------
INT 2F CU - NETWORK REDIRECTOR - FIND FIRST FILE WITHOUT CDS
AX = 1119h
SS = DS = DOS DS
[DTA] = uninitialized 21-byte findfirst search data (see INT 21/AH=4Eh)
SDA first filename pointer -> fully-qualified search template
SDA search attribute = attribute mask for search
Return: CF set on error
AX = DOS error code (see INT 21/AH=59h)
CF clear if successful
[DTA] = updated findfirst search data
(bit 7 of first byte must be set)
[DTA+15h] = standard directory entry for file
Notes: called by DOS 3.1+ kernel
DOS 4.x IFSFUNC returns CF set, AX=0003h
----------2F111A-----------------------------
INT 2F CU - IFSFUNC.EXE (DOS 4.x only) - ???
AX = 111Ah
???
Return: CF set
AX = error code (03h for DOS 4.01 IFSFUNC)
----------2F111B-----------------------------
INT 2F CU - NETWORK REDIRECTOR - FINDFIRST
AX = 111Bh
SS = DS = DOS DS
[DTA] = uninitialized 21-byte findfirst search data (see INT 21/AH=4Eh)
SDA first filename pointer -> fully-qualified search template
SDA CDS pointer -> current directory structure for drive with file
SDA search attribute = attribute mask for search
Return: CF set on error
AX = DOS error code (see INT 21/AH=59h)
CF clear if successful
[DTA] = updated findfirst search data
(bit 7 of first byte must be set)
[DTA+15h] = standard directory entry for file
Note: called by DOS 3.1+ kernel
SeeAlso: AX=111Ch,INT 21/AH=4Eh,INT 21/AH=60h
----------2F111C-----------------------------
INT 2F CU - NETWORK REDIRECTOR - FINDNEXT
AX = 111Ch
SS = DS = DOS DS
[DTA] = 21-byte findfirst search data (see INT 21/AH=4Eh)
Return: CF set on error
AX = DOS error code (see INT 21/AH=59h)
CF clear if successful
[DTA] = updated findfirst search data
(bit 7 of first byte must be set)
[DTA+15h] = standard directory entry for file
Note: called by DOS 3.1+ kernel
SeeAlso: AX=111Bh,INT 21/AH=4Fh
----------2F111D-----------------------------
INT 2F CU - NETWORK REDIRECTOR - CLOSE ALL REMOTE FILES FOR PROCESS
AX = 111Dh
DS???
SS = DOS DS
Return: ???
Notes: called by DOS 3.1+ kernel
closes all FCBs opened by process
SeeAlso: INT 21/AX=5D04h
----------2F111E-----------------------------
INT 2F CU - NETWORK REDIRECTOR - DO REDIRECTION
AX = 111Eh
SS = DOS DS
STACK: WORD function to execute
5F00h get redirection mode
BL = type (03h printer, 04h disk)
Return: BH = state (00h off, 01h on)
5F01h set redirection mode
BL = type (03h printer, 04h disk)
BH = state (00h off, 01h on)
5F02h get redirection list entry
BX = redirection list index
DS:SI -> 16-byte local device name buffer
ES:DI -> 128-byte network name buffer
Return: must set user's BX to device type and CX to
stored parameter value, using AX=1218h to get
stack frame address
5F03h redirect device
BL = device type (see INT 21/AX=5F03h)
CX = stored parameter value
DS:SI -> ASCIZ source device name
ES:DI -> destination ASCIZ network path + ASCIZ passwd
5F04h cancel redirection
DS:SI -> ASCIZ device name or network path
5F05h get redirection list extended entry
BX = redirection list index
DS:SI -> buffer for ASCIZ source device name
ES:DI -> buffer for destination ASCIZ network path
Return: BH = status flag
BL = type (03h printer, 04h disk)
CX = stored parameter value
BP = NETBIOS local session number
5F06h similar to 5F05h???
Return: CF set on error
AX = error code (see INT 21/AH=59h)
STACK unchanged
Note: called by DOS 3.1+ kernel
SeeAlso: INT 21/AX=5F00h,INT 21/AX=5F01h,INT 21/AX=5F02h,INT 21/AX=5F03h
SeeAlso: INT 21/AX=5F04h,INT 21/AX=5F05h,INT 21/AX=5F06h
----------2F111F-----------------------------
INT 2F CU - NETWORK REDIRECTOR - PRINTER SETUP
AX = 111Fh
STACK: WORD function
5E02h set printer setup
5E03h get printer setup
5E04h set printer mode
5E05h get printer mode
Return: CF set on error
AX = error code (see INT 21/AH=59h)
STACK unchanged
Note: called by DOS 3.1+ kernel
SeeAlso: INT 21/AX=5E02h,INT 21/AX=5E03h,INT 21/AX=5E04h,INT 21/AX=5E05h
----------2F1120-----------------------------
INT 2F CU - NETWORK REDIRECTOR - FLUSH ALL DISK BUFFERS
AX = 1120h
DS = DOS DS
???
Return: CF clear (successful)
Notes: called by DOS 3.1+ kernel
uses CDS array pointer and LASTDRIVE= entries in DOS list of lists
SeeAlso: INT 21/AH=0Dh,INT 21/AX=5D01h
----------2F1121-----------------------------
INT 2F CU - NETWORK REDIRECTOR - SEEK FROM END OF REMOTE FILE
AX = 1121h
CX:DX = offset (in bytes) from end
ES:DI -> SFT
SFT DPB field -> DPB of drive with file
SS = DOS DS
Return: CF set on error
AL = DOS error code (see INT 21/AH=59h)
CF clear if successful
DX:AX = new file position
Note: called by DOS 3.1+ kernel
SeeAlso: AX=1228h,INT 21/AH=42h
----------2F1122-----------------------------
INT 2F CU - NETWORK REDIRECTOR - PROCESS TERMINATION HOOK
AX = 1122h
SS = DOS DS
???
Return: ???
Note: called by DOS 3.1+ kernel
----------2F1123-----------------------------
INT 2F CU - NETWORK REDIRECTOR - QUALIFY REMOTE FILENAME
AX = 1123h
DS:SI -> ASCIZ filename to canonicalize
ES:DI -> 128-byte buffer for qualified name
Return: CF set if not resolved
Notes: called by MSDOS 3.1+ kernel, but not called by DR-DOS 5.0 unless the
filename matches the name of a character device
called first when DOS attempts to resolve a filename (unless inside an
AX=5D00h server call); if this fails, DOS resolves the name locally
SeeAlso: AX=1221h,INT 21/AH=60h
----------2F1124-----------------------------
INT 2F CU - NETWORK REDIRECTOR - PRINTER OFF???
AX = 1124h
ES:DI -> SFT
SS = DOS DS
???
Return: CX = ???
Note: called by DOS 3.1+ kernel if AX=1126h returns CF set
SeeAlso: AX=1126h
----------2F1125-----------------------------
INT 2F CU - NETWORK REDIRECTOR - REDIRECTED PRINTER MODE
AX = 1125h
STACK: WORD subfunction
5D07h get print stream state
Return: DL = current state
5D08h set print stream state
DL = new state
5D09h finish print job
Return: CF set on error
AX = error code (see INT 21/AH=59h)
STACK unchanged
Note: called by DOS 3.1+ kernel
SeeAlso: INT 21/AX=5D07h,INT 21/AX=5D08h,INT 21/AX=5D09h
----------2F1126-----------------------------
INT 2F CU - NETWORK REDIRECTOR - PRINTER ON/OFF???
AX = 1126h
ES:DI -> SFT for file handle 4???
SS = DOS DS???
???
Return: CF set on error
Notes: called by DOS 3.1+ kernel
called when print echoing (^P, ^PrtSc) changes state and STDPRN has
bit 11 of the device information word in the SFT set
SeeAlso: AX=1124h
----------2F1127-----------------------------
INT 2F CU - IFSFUNC.EXE (DOS 4.x only) - UNUSED
AX = 1127h
Return: CF set
AX = 0001h (invalid function) (see INT 21/AH=59h)
----------2F1128-----------------------------
INT 2F CU - IFSFUNC.EXE (DOS 4.x only) - UNUSED
AX = 1128h
Return: CF set
AX = 0001h (invalid function) (see INT 21/AH=59h)
----------2F1129-----------------------------
INT 2F CU - IFSFUNC.EXE (DOS 4.x only) - UNUSED
AX = 1129h
Return: CF set
AX = 0001h (invalid function) (see INT 21/AH=59h)
----------2F112A-----------------------------
INT 2F CU - IFSFUNC.EXE (DOS 4.x only) - ???
AX = 112Ah
DS = DOS DS
???
Return: ???
Note: does something to each IFS driver
----------2F112B-----------------------------
INT 2F CU - IFSFUNC.EXE (DOS 4.x only) - GENERIC IOCTL???
AX = 112Bh
SS = DOS DS
CX = function/category
DS:DX -> parameter block
STACK: WORD value of AX on entry to INT 21 (440Ch or 440Dh)
???
Return: CF set on error
AX = DOS error code (see INT 21/AH=59h)
CF clear if successful
Note: called by DOS 4.0 kernel
----------2F112C-----------------------------
INT 2F CU - IFSFUNC.EXE (DOS 4.x only) - ???
AX = 112Ch
SS = DOS DS
SDA current SFT pointer -> SFT for file
???
Return: CF set on error
Note: called by SHARE in DOS 5.0
----------2F112D-----------------------------
INT 2F CU - IFSFUNC.EXE (DOS 4.x only) - ???
AX = 112Dh
BL = subfunction (value of AL on INT 21)
04h truncate open file to zero length
ES:DI -> SFT for file
Return: CF clear
else ???
Return: CX = ??? (00h or 02h for DOS 4.01)
ES:DI -> SFT
SS = DOS DS
Return: DS = DOS DS
Note: called by DOS 4.0 kernel on INT 21/AX=5702h,INT 21/AX=5703h,
INT 21/AX=5704h
----------2F112E-----------------------------
INT 2F CU - NETWORK REDIRECTOR (DOS 4+) - EXTENDED OPEN/CREATE FILE
AX = 112Eh
SS = DS = DOS DS
ES:DI -> uninitialized SFT for file
STACK: WORD file attribute for created/truncated file
low byte = file attributes
high byte = 00h normal create/open, 01h create new file
SDA first filename pointer -> fully-qualified filename
SDA extended file open action = action code (see INT 21/AX=6C00h)
SDA extended file open mode = open mode for file (see INT 21/AX=6C00h)
Return: CF set on error
AX = error code
CF clear if successful
CX = result code
01h file opened
02h file created
03h file replaced (truncated)
SFT initialized (except handle count, which DOS manages itself)
Note: called by DOS 4.0 kernel
SeeAlso: AX=1115h,AX=1116h,AX=1117h,INT 21/AX=6C00h
----------2F112F-----------------------------
INT 2F CU - IFSFUNC.EXE (DOS 4.x only) - ???
AX = 112Fh
SS = DOS DS
STACK: WORD function in low byte
00h ???
DS:SI -> Current Directory Structure???
CL = drive (1=A:)
01h ???
DS:SI -> ???
CL = file handle???
02h ???
DS:SI -> Current Directory Structure???
DI = ???
CX = drive (1=A:)
???
Return: CF set on error
AX = DOS error code (see INT 21/AH=59h)
CF clear if successful
Note: called by DOS 4.0 kernel
SeeAlso: INT 21/AH=6Bh
----------2F1130-----------------------------
INT 2F CU - IFSFUNC.EXE (DOS 4.x only) - GET IFSFUNC SEGMENT
AX = 1130h
Return: ES = CS of resident IFSFUNC
----------2F1186-----------------------------
INT 2F - LAN Manager Enhanced DOS API - DosReadAsynchNmPipe
AX = 1186h
???
Return: ???
Note: LAN Manager enhance mode adds features beyond the standard redirector
file/printer services
SeeAlso: AX=118Fh,INT 21/AX=5F39h
----------2F118A-----------------------------
INT 2F - LAN Manager 2.0 DOS Enhanced ENCRYPT.EXE - STREAM ENCRYPTION SERVICE
AX = 118Ah
???
Return: ???
SeeAlso: AX=1186h,AH=41h,AH=42h,AH=4Bh
----------2F118F-----------------------------
INT 2F - LAN Manager Enhanced DOS API - DosWriteAsynchNmPipe
AX = 118Fh
???
Return: ???
SeeAlso: AX=1186h,INT 21/AX=5F3Ah
----------2F1200-----------------------------
INT 2F U - DOS 3+ internal - INSTALLATION CHECK
AX = 1200h
Return: AL = FFh (for compatibility with other INT 2F functions)
----------2F1201-----------------------------
INT 2F U - DOS 3+ internal - CLOSE CURRENT FILE
AX = 1201h
SS = DOS DS (must be using a DOS internal stack)
SDA current SFT pointer -> SFT of file to close
Return: CF set on error
BX???
CX new reference count of SFT
ES:DI -> SFT for file
SeeAlso: AX=1106h,AX=1227h,INT 21/AH=3Eh
----------2F1202-----------------------------
INT 2F U - DOS 3+ internal - GET INTERRUPT ADDRESS
AX = 1202h
STACK: WORD vector number
Return: ES:BX -> interrupt vector
STACK unchanged
----------2F1203-----------------------------
INT 2F U - DOS 3+ internal - GET DOS DATA SEGMENT
AX = 1203h
Return: DS = data segment of IBMDOS.COM/MSDOS.SYS
Note: for DOS prior to version 5.0, the data segment is the same as the code
segment
----------2F1204-----------------------------
INT 2F U - DOS 3+ internal - NORMALIZE PATH SEPARATOR
AX = 1204h
STACK: WORD character to normalize
Return: AL = normalized character (forward slash turned to backslash, all
others unchanged)
ZF set if path separator
STACK unchanged
----------2F1205-----------------------------
INT 2F U - DOS 3+ internal - OUTPUT CHARACTER TO STANDARD OUTPUT
AX = 1205h
STACK: WORD character to output
Return: STACK unchanged
Note: can be called only from within DOS
----------2F1206-----------------------------
INT 2F U - DOS 3+ internal - INVOKE CRITICAL ERROR
AX = 1206h
DI = error code
BP:SI -> device driver header
SS = DOS DS (must be using a DOS internal stack)
STACK: WORD value to be passed to INT 24 in AX
Return: AL = 0-3 for Abort, Retry, Ignore, Fail
STACK unchanged
SeeAlso: INT 24
----------2F1207-----------------------------
INT 2F U - DOS 3+ internal - MAKE DISK BUFFER MOST-RECENTLY USED
AX = 1207h
DS:DI -> disk buffer
Return: nothing
Desc: move the indicated buffer to the end of the disk buffer chain (least-
recently used is first); under DOS 3.3, the buffer is then moved to
the start of the disk buffer chain if it was marked unused
Note: can be called only from within DOS
SeeAlso: AX=120Fh
----------2F1208-----------------------------
INT 2F U - DOS 3+ internal - DECREMENT SFT REFERENCE COUNT
AX = 1208h
ES:DI -> SFT
Return: AX = original value of reference count
Notes: if the reference count was 1, it is set to FFFFh (since 0 indicates
that the SFT is not in use). It is the caller's responsibility to
set the reference count to zero after cleaning up.
used by network redirectors such as MSCDEX
SeeAlso: AX=1106h
----------2F1209-----------------------------
INT 2F U - DOS 3+ internal - FLUSH AND FREE DISK BUFFER
AX = 1209h
DS:DI -> disk buffer
Return: disk buffer marked unused, contents written to disk if buffer dirty
Note: can be called only from within DOS
SeeAlso: AX=120Eh,AX=1215h
----------2F120A-----------------------------
INT 2F U - DOS 3+ internal - PERFORM CRITICAL ERROR INTERRUPT
AX = 120Ah
DS = SS = DOS DS (must be using a DOS internal stack)
STACK: WORD extended error code
Return: AL = user response (0=ignore, 1=retry, 2=abort, 3=fail)
CF clear if retry, set otherwise
STACK unchanged
Notes: can only be called during a DOS function call, as it uses various
fields in the SDA to set up the registers for the INT 24
reportedly sets current DPB's first root directory sector to 1
SeeAlso: INT 24
----------2F120B-----------------------------
INT 2F U - DOS 3+ internal - SIGNAL SHARING VIOLATION TO USER
AX = 120Bh
ES:DI -> system file table entry for previous open of file
STACK: WORD extended error code (should be 20h--sharing violation)
Return: CF clear if operation should be retried
CF set if operation should not be retried
AX = error code (20h) (see INT 21/AH=59h)
STACK unchanged
Notes: can only be called during a DOS function call
should only be called if an attempt was made to open an already-open
file contrary to the sharing rules
invokes INT 24 if SFT file opened via FCB or in compatibility mode with
inheritance allowed
----------2F120C-----------------------------
INT 2F U - DOS 3+ internal - OPEN DEVICE AND SET SFT OWNER???
AX = 120Ch
SDA current SFT pointer -> SFT for file
DS = DOS DS
SS = DOS DS (must be using a DOS internal stack)
Return: ES, DI, AX destroyed
Notes: invokes "device open" call on device driver for SFT
changes owner of last-accessed SFT to calling process if it was opened
via FCB
called by network redirectors such as MSCDEX
----------2F120D-----------------------------
INT 2F U - DOS 3+ internal - GET DATE AND TIME
AX = 120Dh
SS = DOS DS (must be using a DOS internal stack)
Return: AX = current date in packed format (see INT 21/AX=5700h)
DX = current time in packed format (see INT 21/AX=5700h)
SeeAlso: INT 21/AH=2Ah,INT 21/AH=2Ch
----------2F120E-----------------------------
INT 2F U - DOS 3+ internal - MARK ALL DISK BUFFERS UNREFERENCED
AX = 120Eh
SS = DOS DS (must be using a DOS internal stack)
Return: DS:DI -> first disk buffer
Note: clears "referenced" flag on all disk buffers
SeeAlso: AX=1209h,AX=1210h,INT 21/AH=0Dh
----------2F120F-----------------------------
INT 2F U - DOS 3+ internal - MAKE BUFFER MOST RECENTLY USED
AX = 120Fh
DS:DI -> disk buffer
SS = DOS DS (must be using a DOS internal stack)
Return: DS:DI -> next buffer in buffer list
Desc: move the indicated buffer to the end of the disk buffer chain (least-
recently used is first); under DOS 3.3, the buffer is then moved to
the start of the disk buffer chain if it was marked unused
Note: this function is the same as AX=1207h except that it returns a
pointer to the buffer following the specified buffer in the buffer
chain
SeeAlso: AX=1207h
----------2F1210-----------------------------
INT 2F U - DOS 3+ internal - FIND UNREFERENCED DISK BUFFER
AX = 1210h
DS:DI -> first disk buffer to check
Return: ZF clear if found
DS:DI -> first unreferenced disk buffer
ZF set if not found
SeeAlso: AX=120Eh
----------2F1211-----------------------------
INT 2F U - DOS 3+ internal - NORMALIZE ASCIZ FILENAME
AX = 1211h
DS:SI -> ASCIZ filename to normalize
ES:DI -> buffer for normalized filename
Return: destination buffer filled with uppercase filename, with slashes turned
to backslashes
SeeAlso: AX=121Eh,AX=1221h
----------2F1212-----------------------------
INT 2F U - DOS 3+ internal - GET LENGTH OF ASCIZ STRING
AX = 1212h
ES:DI -> ASCIZ string
Return: CX = length of string
SeeAlso: AX=1225h
----------2F1213-----------------------------
INT 2F U - DOS 3+ internal - UPPERCASE CHARACTER
AX = 1213h
STACK: WORD character to convert to uppercase
Return: AL = uppercase character
STACK unchanged
----------2F1214-----------------------------
INT 2F U - DOS 3+ internal - COMPARE FAR POINTERS
AX = 1214h
DS:SI = first pointer
ES:DI = second pointer
Return: ZF set if pointers are equal, ZF clear if not equal
----------2F1215-----------------------------
INT 2F U - DOS 3+ internal - FLUSH BUFFER
AX = 1215h
DS:DI -> disk buffer
SS = DOS DS (must be using a DOS internal stack)
STACK: WORD drives for which to skip buffer
ignore buffer if drive same as high byte, or bytes differ and
the buffer is for a drive OTHER than that given in low byte
Return: STACK unchanged
Note: can be called only from within DOS
SeeAlso: AX=1209h
----------2F1216-----------------------------
INT 2F U - DOS 3+ internal - GET ADDRESS OF SYSTEM FILE TABLE
AX = 1216h
BX = system file table entry number
Return: CF clear if successful
ES:DI -> system file table entry
CF set if BX greater than FILES=
SeeAlso: AX=1220h
----------2F1217-----------------------------
INT 2F U - DOS 3+ internal - GET CURRENT DIRECTORY STRUCTURE FOR DRIVE
AX = 1217h
SS = DOS DS (must be using a DOS internal stack)
STACK: WORD drive (0 = A:, 1 = B:, etc)
Return: CF set on error
(drive > LASTDRIVE)
CF clear if successful
DS:SI -> current directory structure for specified drive
STACK unchanged
SeeAlso: AX=1219h
----------2F1218-----------------------------
INT 2F U - DOS 3+ internal - GET CALLER'S REGISTERS
AX = 1218h
Return: DS:SI -> saved caller's AX,BX,CX,DX,SI,DI,BP,DS,ES (on stack)
Note: only valid while within DOS
----------2F1219-----------------------------
INT 2F U - DOS 3+ internal - SET DRIVE???
AX = 1219h
SS = DOS DS (must be using a DOS internal stack)
STACK: WORD drive (0 = default, 1 = A:, etc)
Return: ???
STACK unchanged
Notes: calls AX=1217h
builds a current directory structure if inside server call
(INT 21/AX=5D00h)
SeeAlso: AX=1217h,AX=121Fh
----------2F121A-----------------------------
INT 2F U - DOS 3+ internal - GET FILE'S DRIVE
AX = 121Ah
DS:SI -> filename
Return: AL = drive (0 = default, 1 = A:, etc, FFh = invalid)
DS:SI -> filename without leading X: (if present)
SeeAlso: INT 21/AH=19h,INT 21/AH=60h
----------2F121B-----------------------------
INT 2F U - DOS 3+ internal - SET YEAR/LENGTH OF FEBRUARY
AX = 121Bh
CL = year - 1980
Return: AL = number of days in February
Note: requires DS to be set to the DOS code segment
SeeAlso: INT 21/AH=2Bh
----------2F121C-----------------------------
INT 2F U - DOS 3+ internal - CHECKSUM MEMORY
AX = 121Ch
DS:SI -> start of memory to checksum
CX = number of bytes
DX = initial checksum
SS = DOS DS (must be using a DOS internal stack)
Return: AX, CX destroyed
DX = checksum
DS:SI -> first byte after checksummed range
Note: used by DOS to determine day count since 1/1/80 given a date
SeeAlso: AX=121Dh
----------2F121D-----------------------------
INT 2F U - DOS 3+ internal - SUM MEMORY
AX = 121Dh
DS:SI -> memory to add up
CX = 0000h
DX = limit
Return: AL = byte which exceeded limit
CX = number of bytes before limit exceeded
DX = remainder after adding first CX bytes
DS:SI -> byte beyond the one which exceeded the limit
Note: used by DOS to determine year or month given day count since 1/1/80
SeeAlso: AX=121Ch
----------2F121E-----------------------------
INT 2F U - DOS 3+ internal - COMPARE FILENAMES
AX = 121Eh
DS:SI -> first ASCIZ filename
ES:DI -> second ASCIZ filename
Return: ZF set if filenames equivalent, ZF clear if not
SeeAlso: AX=1211h,AX=1221h
----------2F121F-----------------------------
INT 2F U - DOS 3+ internal - BUILD CURRENT DIRECTORY STRUCTURE
AX = 121Fh
SS = DOS DS (must be using a DOS internal stack)
STACK: WORD drive letter
Return: ES:DI -> current directory structure (will be overwritten by next call)
STACK unchanged
----------2F1220-----------------------------
INT 2F U - DOS 3+ internal - GET JOB FILE TABLE ENTRY
AX = 1220h
BX = file handle
Return: CF set on error
AL = 6 (invalid file handle)
CF clear if successful
ES:DI -> JFT entry for file handle in current process
Note: the byte pointed at by ES:DI contains the number of the SFT for the
file handle, or FFh if the handle is not open
SeeAlso: AX=1216h,AX=1229h
----------2F1221-----------------------------
INT 2F U - DOS 3+ internal - CANONICALIZE FILE NAME
AX = 1221h
DS:SI -> file name to be fully qualified
ES:DI -> 128-byte buffer for resulting canonical file name
SS = DOS DS (must be using a DOS internal stack)
Return: (see INT 21/AH=60h)
Note: identical to INT 21/AH=60h
SeeAlso: AX=1123h,INT 21/AH=60h
----------2F1222-----------------------------
INT 2F U - DOS 3+ internal - SET EXTENDED ERROR INFO
AX = 1222h
SS = DOS data segment
SS:SI -> 4-byte records
BYTE error code, FFh = last record
BYTE error class, FFh = don't change
BYTE suggested action, FFh = don't change
BYTE error locus, FFh = don't change
SDA error code set
Return: SI destroyed
SDA error class, error locus, and suggested action fields set
Note: can be called only from within DOS
SeeAlso: AX=122Dh,INT 21/AH=59h
----------2F1223-----------------------------
INT 2F U - DOS 3+ internal - CHECK IF CHARACTER DEVICE
AX = 1223h
DS = DOS DS
SS = DOS DS (must be using a DOS internal stack)
SDA+218h (DOS 3.10-3.30) = eight-character blank-padded name
SDA+22Bh (DOS 4.0-5.0) = eight-character blank-padded name
Return: CF set if no character device by that name found
CF clear if found
BH = low byte of device attribute word
Note: can only be called from within DOS
SeeAlso: INT 21/AX=5D06h,INT 21/AX=5D0Bh
----------2F1224-----------------------------
INT 2F U - DOS 3+ internal - DELAY
AX = 1224h
SS = DOS DS (must be using a DOS internal stack)
Return: after delay set by INT 21/AX=440Bh, unless in server call
(INT 21/AX=5D00h)
Note: delay is dependent on the processor speed, and is skipped entirely if
inside a server call
SeeAlso: INT 21/AX=440Bh,INT 21/AH=52h
----------2F1225-----------------------------
INT 2F U - DOS 3+ internal - GET LENGTH OF ASCIZ STRING
AX = 1225h
DS:SI -> ASCIZ string
Return: CX = length of string
SeeAlso: AX=1212h
----------2F1226-----------------------------
INT 2F U - DOS 3.3+ internal - OPEN FILE
AX = 1226h
CL = access mode
DS:DX -> ASCIZ filename
SS = DOS DS (must be using a DOS internal stack)
Return: CF set on error
AL = error code (see INT 21/AH=59h)
CF clear if successful
AX = file handle
Notes: can only be called from within DOS
equivalent to INT 21/AH=3Dh
SeeAlso: AX=1227h,INT 21/AH=3Dh
----------2F1227-----------------------------
INT 2F U - DOS 3.3+ internal - CLOSE FILE
AX = 1227h
BX = file handle
SS = DOS DS (must be using a DOS internal stack)
Return: CF set on error
AL = 06h invalid file handle
CF clear if successful
Notes: can only be called from within DOS
equivalent to INT 21/AH=3Eh
SeeAlso: AX=1106h,AX=1201h,AX=1226h,INT 21/AH=3Eh
----------2F1228BP4200-----------------------
INT 2F U - DOS 3.3+ internal - MOVE FILE POINTER
AX = 1228h
BP = 4200h, 4201h, 4202h (see INT 21/AH=42h)
BX = file handle
CX:DX = offset in bytes
SS = DOS DS (must be using a DOS internal stack)
Return: as for INT 21/AH=42h
Notes: equivalent to INT 21/AH=42h, but may only be called from inside a DOS
function call
sets user stack frame pointer to dummy buffer, moves BP to AX, performs
LSEEK, and restores frame pointer
SeeAlso: INT 21/AH=42h
----------2F1229-----------------------------
INT 2F U - DOS 3.3+ internal - READ FROM FILE
AX = 1229h
BX = file handle
CX = number of bytes to read
DS:DX -> buffer
SS = DOS DS (must be using a DOS internal stack)
Return: as for INT 21/AH=3Fh
Note: equivalent to INT 21/AH=3Fh, but may only be called when already inside
a DOS function call
SeeAlso: AX=1226h,INT 21/AH=3Fh
----------2F122A-----------------------------
INT 2F U - DOS 3.3+ internal - SET FASTOPEN ENTRY POINT
AX = 122Ah
BX = entry point to set (0001h or 0002h)
DS:SI -> FASTOPEN entry point
(entry point not set if SI = FFFFh for DOS 4+)
Return: CF set if specified entry point already set
Notes: entry point in BX is ignored under DOS 3.30
both entry points set to same handler by DOS 4.01
DOS 3.30+ FASTOPEN is called with:
AL = 01h ???
CX = ??? seems to be offset
DI = ??? seems to be offset
SI = offset in DOS DS of filename
AL = 02h ???
AL = 03h open file???
SI = offset in DOS DS of filename
AL = 04h ???
AH = subfunction (00h,01h,02h)
ES:DI -> ???
CX = ??? (subfunctions 01h and 02h only)
Returns: CF set on error or not installed
Note: function 03h calls function 01h first
PCDOS 4.01 FASTOPEN is additionally called with:
AL = 04h ???
AH = 03h
???
AL = 05h ???
AL = 0Bh ???
AL = 0Ch ???
AL = 0Dh ???
AL = 0Eh ???
AL = 0Fh ???
AL = 10h ???
MSDOS 5.0 FASTOPEN is additionally called with:
AL = 04h ???
AH = 03h
???
AL = 05h ???
DL = drive (00h = A:)
???
AL = 06h ???
----------2F122B-----------------------------
INT 2F U - DOS 3.3+ internal - IOCTL
AX = 122Bh
BP = 44xxh
SS = DOS DS (must be using a DOS internal stack)
additional registers as appropriate for INT 21/AX=44xxh
Return: as for INT 21/AH=44h
Notes: equivalent to INT 21/AH=44h, but may only be called when already inside
a DOS function call
sets user stack frame pointer to dummy buffer, moves BP to AX, performs
IOCTL, and restores frame pointer
SeeAlso: INT 21/AH=44h
----------2F122C-----------------------------
INT 2F U - DOS 3.3+ internal - GET DEVICE CHAIN
AX = 122Ch
Return: BX:AX -> header of second device driver (NUL is first) in driver chain
SeeAlso: INT 21/AH=52h
----------2F122D-----------------------------
INT 2F U - DOS 3.3+ internal - GET EXTENDED ERROR CODE
AX = 122Dh
Return: AX = current extended error code
SeeAlso: AX=1222h,INT 21/AH=59h
----------2F122E-----------------------------
INT 2F U - DOS 4+ internal - GET OR SET ERROR TABLE ADDRESSES
AX = 122Eh
DL = subfunction
00h get standard DOS error table
Return: ES:DI -> error table
(DOS 4: errors 00h-12h,50h-5Bh)
(DOS 5: errors 00h-26h,4Fh,51h-59h)
01h set standard DOS error table
ES:DI -> error table
02h get parameter error table (errors 00h-0Ah)
Return: ES:DI -> error table
03h set parameter error table
ES:DI -> error table
04h get critical/SHARE error table (errors 13h-2Bh)
Return: ES:DI -> error table
05h set critical/SHARE error table
ES:DI -> error table
06h get ??? error table
Return: ES:DI -> error table or 0000h:0000h
07h set ??? error table
ES:DI -> error table
08h get error message retriever (see below)
Return: ES:DI -> FAR procedure to fetch error message
09h set ??? error table
ES:DI -> error table
Notes: if the returned segment on a "get" is 0001h, then the offset specifies
the offset of the error message table within COMMAND.COM, and the
procedure returned by DL=08h should be called
DOS 5.0 COMMAND.COM does not allow setting any of the addresses (calls
with DL odd are ignored); they are always returned with segment 0001h
for DOS 5.0, the standard and critical/SHARE error tables are combined
into a single error table
SeeAlso: AX=0500h,INT 21/AH=59h
Format of DOS 4.x error table:
Offset Size Description
00h BYTE FFh
01h 2 BYTEs 04h,00h (DOS version???)
03h BYTE number of error headers following
04h 2N WORDs table of all error headers for table
Offset Size Description
00h WORD error message number
02h WORD offset of error message from start of header
error messages are count byte followed by msg
Note: DOS 5 error tables consist of one word per error number; each word
contains either the offset of a counted string or 0000h
Call error retrieval function with:
AX = error number
DI = offset of error table
Return: ES:DI -> error message (counted string)
Notes: this function needs to access COMMAND.COM if the messages were not
loaded into memory permanently with /MSG; the caller should assume
that the returned message will be overwritten by the next call of
the function
supported by DR-DOS 5.0
----------2F122F-----------------------------
INT 2F U - DOS 4.x internal - SET DOS VERSION NUMBER TO RETURN
AX = 122Fh
DX = DOS version number (0000h = return true DOS version)
Note: not available under DR-DOS 5.0 or 6.0
SeeAlso: INT 21/AH=30h,INT 21/AX=3306h
----------2F13-------------------------------
INT 2F U - DOS 3.2+ - SET DISK INTERRUPT HANDLER
AH = 13h
DS:DX -> interrupt handler disk driver calls on read/write
ES:BX = address to restore INT 13 to on system halt (exit from root
shell) or warm boot (INT 19)
Return: DS:DX from previous invocation of this function
ES:BX from previous invocation of this function
Notes: IO.SYS hooks INT 13 and inserts one or more filters ahead of the
original INT 13 handler. The first is for disk change detection
on floppy drives, the second is for tracking formatting calls and
correcting DMA boundary errors, the third is for working around
problems in a particular version of IBM's ROM BIOS
before the first call, ES:BX points at the original BIOS INT 13; DS:DX
also points there unless IO.SYS has installed a special filter for
hard disk reads (on systems with model byte FCh and BIOS date
"01/10/84" only), in which case it points at the special filter
most DOS 3.3+ disk access is via the vector in DS:DX, although a few
functions are still invoked via an INT 13 instruction
this is a dangerous security loophole for any virus-monitoring software
which does not trap this call (many Bulgarian viruses are known to
use it to get the original ROM entry point)
SeeAlso: INT 13/AH=01h,INT 19
----------2F1400-----------------------------
INT 2F C - NLSFUNC.COM - INSTALLATION CHECK
AX = 1400h
Return: AL = 00h not installed, OK to install
01h not installed, not OK
FFh installed
Notes: called by DOS v3.3+ kernel
supported by OS/2 v1.3+ compatibility box, which always returns AL=FFh
supported by DR-DOS 5.0
documented for MS-DOS 5.0, but undocumented in prior versions
SeeAlso: AX=1401h"NLSFUNC",AX=1402h"NLSFUNC"
----------2F1400-----------------------------
INT 2F - European MSDOS 4.0 POPUP - "CheckPu" - INSTALLATION CHECK
AX = 1400h
Return: AX = FFFFh if installed
BX = maximum memory required to save screen and keyboard info
CF clear if successful
CF set on error
AX = error code
0002h invalid function
0004h unknown error
Note: the POPUP interface is used by background programs (see INT 21/AH=80h)
to communicate with the user
SeeAlso: AX=1401h"POPUP",AX=1402h"POPUP",AX=1403h"POPUP"
----------2F1401-----------------------------
INT 2F CU - NLSFUNC.COM - CHANGE CODE PAGE
AX = 1401h
DS:SI -> internal code page structure (see below)
BX = new code page
DX = country code???
Return: AL = status
00h successful
else DOS error code
Note: called by DOS v3.3+ kernel
SeeAlso: AX=1400h"NLSFUNC",AX=1402h"NLSFUNC",INT 21/AH=66h
Format of DOS 3.30 internal code page structure:
Offset Size Description
00h 8 BYTEs ???
08h 64 BYTEs name of country information file
48h WORD system code page
4Ah WORD number of supported subfunctions
4Ch 5 BYTEs data to return for INT 21/AX=6502h
51h 5 BYTEs data to return for INT 21/AX=6504h
56h 5 BYTEs data to return for INT 21/AX=6505h
5Bh 5 BYTEs data to return for INT 21/AX=6506h
60h 41 BYTEs data to return for INT 21/AX=6501h
----------2F1401-----------------------------
INT 2F - European MSDOS 4.0 POPUP - "PostPu" - OPEN/CLOSE POPUP SCREEN
AX = 1401h
DL = function (00h open, 01h close)
DH = wait flag
00h block until screen opens
01h return error if screen is not available
02h urgent--always open screen immediately
Return: CF clear if successful
BX = amount of memory needed to save screen and keyboard info,
0000h if default save location can be used (only if DH was 02h)
CF set on error
Note: the application using the screen is frozen until the popup screen is
closed
SeeAlso: AX=1400h"POPUP",AX=1402h"POPUP",AX=1403h"POPUP"
----------2F1402-----------------------------
INT 2F CU - NLSFUNC.COM - GET COUNTRY INFO
AX = 1402h
BP = subfunction (same as AL for INT 21/AH=65h)
BX = code page
DX = country code
DS:SI -> internal code page structure (see AX=1401h)
ES:DI -> user buffer
CX = size of user buffer
Return: AL = status
00h successful
else DOS error code
Notes: called by DOS v3.3+ kernel on INT 21/AH=65h
code page structure apparently only needed for COUNTRY.SYS pathname
SeeAlso: AX=1401h"NLSFUNC",AX=1403h"NLSFUNC",AX=1404h,INT 21/AH=65h
----------2F1402-----------------------------
INT 2F - European MSDOS 4.0 POPUP - "SavePu" - SAVE POPUP SCREEN
AX = 1402h
ES:DI -> save buffer (0000h:0000h for default buffer in POPUP)
Return: CF clear if successful
CF set on error
AX = error code
0001h process does not own screen
0004h unknown error
0005h invalid pointer
SeeAlso: AX=1400h"POPUP",AX=1401h"POPUP",AX=1403h"POPUP"
----------2F1403-----------------------------
INT 2F CU - NLSFUNC.COM - SET COUNTRY INFO
AX = 1403h
DS:SI -> internal code page structure (see AX=1401h)
BX = code page
DX = country code
Return: AL = status
???
Note: called by DOS v3.3+ kernel on INT 21/AH=38h
SeeAlso: AX=1402h"NLSFUNC",AX=1404h,INT 21/AH=38h"SET"
----------2F1403-----------------------------
INT 2F - European MSDOS 4.0 POPUP - "RestorePu" - RESTORE SCREEN
AX = 1403h
ES:DI -> buffer containing saved screen
(0000h:0000h for default buffer in POPUP)
Return: CF clear if successful
CF set on error
AX = error code (see AX=1402h"POPUP")
SeeAlso: AX=1400h"POPUP",AX=1401h"POPUP",AX=1402h"POPUP"
----------2F1404-----------------------------
INT 2F CU - NLSFUNC.COM - GET COUNTRY INFO
AX = 1404h
BX = code page
DX = country code
DS:SI -> internal code page structure (see AX=1401h)
ES:DI -> user buffer
Return: AL = status
???
Notes: called by DOS v3.3+ kernel on INT 21/AH=38h
code page structure apparently only needed for COUNTRY.SYS pathname
SeeAlso: AX=1402h,AX=1403h,INT 21/AH=38h"GET"
----------2F14FE-----------------------------
INT 2F U - DR-DOS 5.0 NLSFUNC - ???
AX = 14FEh
DI = ???
???
Return: ???
Note: DR-DOS 5.0 NLSFUNC returns CF set and AX=0001h if AL was not 00h, FEh,
or FFh on entry.
SeeAlso: AX=14FFh
----------2F14FF-----------------------------
INT 2F U - DR-DOS 5.0 NLSFUNC - ???
AX = 14FFh
???
Return: ???
Note: DR-DOS 5.0 NLSFUNC returns CF set and AX=0001h if AL was not 00h, FEh,
or FFh on entry.
SeeAlso: AX=14FEh
----------2F1500-----------------------------
INT 2F - DOS 4.00 GRAPHICS.COM - INSTALLATION CHECK
AX = 1500h
Return: AX = FFFFh
ES:DI -> ??? (graphics data?)
Note: this installation check conflicts with the CD-ROM Extensions
installation check; moved to AX=AC00h in later versions
SeeAlso: AX=AC00h
----------2F1500BX0000-----------------------
INT 2F - CD-ROM - INSTALLATION CHECK
AX = 1500h
BX = 0000h
Return: BX = number of CD-ROM drive letters used
CX = starting drive letter (0=A:)
Notes: this installation check DOES NOT follow the format used by other
software
this installation check conflicts with the DOS 4.00 GRAPHICS.COM
installation check
SeeAlso: INT 2F/AX=D000h"Lotus"
----------2F1501-----------------------------
INT 2F - CD-ROM - GET DRIVE DEVICE LIST
AX = 1501h
ES:BX -> buffer to hold drive letter list (5 bytes per drive letter)
Return: buffer filled, for each drive letter
BYTE subunit number in driver
DWORD address of device driver header
----------2F1502-----------------------------
INT 2F - CD-ROM - GET COPYRIGHT FILE NAME
AX = 1502h
ES:BX -> 38-byte buffer for name of copyright file
CX = drive number (0=A:)
Return: CF set if drive is not a CD-ROM drive
AX = 15 (invalid drive)
CF clear if successful
SeeAlso: AX=1503h
----------2F1503-----------------------------
INT 2F - CD-ROM - GET ABSTRACT FILE NAME
AX = 1503h
ES:BX -> 38-byte buffer for name of abstract file
CX = drive number (0=A:)
Return: CF set if drive is not a CD-ROM drive
AX = 15 (invalid drive)
CF clear if successful
SeeAlso: AX=1502h
----------2F1504-----------------------------
INT 2F - CD-ROM - GET BIBLIOGRAPHIC DOC FILE NAME
AX = 1504h
ES:BX -> 38-byte buffer for name of bibliographic documentation file
CX = drive number (0=A:)
Return: CF set if drive is not a CD-ROM drive
AX = 15 (invalid drive)
CF clear if successful
----------2F1505-----------------------------
INT 2F - CD-ROM - READ VTOC
AX = 1505h
ES:BX -> 2048-byte buffer
CX = drive number (0=A:)
DX = sector index (0=first volume descriptor,1=second,...)
Return: CF set on error
AX = error code (15=invalid drive,21=not ready)
CF clear if successful
AX = volume descriptor type (1=standard,FFh=terminator,0=other)
----------2F1506-----------------------------
INT 2F - CD-ROM - TURN DEBUGGING ON
AX = 1506h
BX = debugging function to enable
Note: reserved for development
SeeAlso: AX=1507h
----------2F1507-----------------------------
INT 2F - CD-ROM - TURN DEBUGGING OFF
AX = 1507h
BX = debugging function to disable
Note: reserved for development
SeeAlso: AX=1506h
----------2F1508-----------------------------
INT 2F - CD-ROM - ABSOLUTE DISK READ
AX = 1508h
ES:BX -> buffer
CX = drive number (0=A:)
SI:DI = starting sector number
DX = number of sectors to read
Return: CF set on error
AL = error code (15=invalid drive,21=not ready)
CF clear if successful
SeeAlso: AX=1509h
----------2F1509-----------------------------
INT 2F - CD-ROM - ABSOLUTE DISK WRITE
AX = 1509h
ES:BX -> buffer
CX = drive number (0=A:)
SI:DI = starting sector number
DX = number of sectors to write
Note: corresponds to INT 26h and is currently reserved and nonfunctional
SeeAlso: AX=1508h
----------2F150A-----------------------------
INT 2F - CD-ROM - RESERVED
AX = 150Ah
----------2F150B-----------------------------
INT 2F - CD-ROM v2.00+ - DRIVE CHECK
AX = 150Bh
CX = drive number (0=A:)
Return: BX = ADADh if MSCDEX.EXE installed
AX = 0000h if drive not supported
nonzero if supported
SeeAlso: AX=150Dh
----------2F150C-----------------------------
INT 2F - CD-ROM v2.00+ - GET MSCDEX.EXE VERSION
AX = 150Ch
Return: BH = major version
BL = minor version
Note: MSCDEX.EXE versions prior to 2.00 return BX=0
----------2F150D-----------------------------
INT 2F - CD-ROM v2.00+ - GET CD-ROM DRIVE LETTERS
AX = 150Dh
ES:BX -> buffer for drive letter list (1 byte per drive)
Return: buffer filled with drive numbers (0=A:). Each byte corresponds
to the drive in the same position for function 1501h
SeeAlso: AX=150Bh
----------2F150E-----------------------------
INT 2F - CD-ROM v2.00+ - GET/SET VOLUME DESCRIPTOR PREFERENCE
AX = 150Eh
BX = subfunction
00h get preference
DX = 0000h
Return: DX = preference settings
01h set preference
DH = volume descriptor preference
01h = primary volume descriptor
02h = supplementary volume descriptor
DL = supplementary volume descriptor preference
01h = shift-Kanji
CX = drive number (0=A:)
Return: CF set on error
AX = error code (15=invalid drive,1=invalid function)
CF clear if successful
----------2F150F-----------------------------
INT 2F - CD-ROM v2.00+ - GET DIRECTORY ENTRY
AX = 150Fh
CL = drive number (0=A:)
CH bit 0 = copy flag
clear if direct copy
set if copy to structure which removed ISO/High Sierra diffs
ES:BX -> ASCIZ path name
SI:DI -> buffer for directory entry (see below)
minimum 255 bytes for direct copy
Return: CF set on error
AX = error code
CF clear if succesful
AX = disk format (0=High Sierra,1=ISO 9660)
Format of directory entry (direct copy):
Offset Size Description
00h BYTE length of directory entry
01h BYTE length of XAR in Logical Block Numbers
02h DWORD LBN of data, Intel (little-endian) format
06h DWORD LBN of data, Motorola (big-endian) format
0Ah DWORD length of file, Intel format
0Eh DWORD length of file, Motorola format
---High Sierra---
12h 6 BYTEs date and time
18h BYTE bit flags
19h BYTE reserved
---ISO 9660---
12h 7 BYTEs date and time
19h BYTE bit flags
---both formats---
1Ah BYTE interleave size
1Bh BYTE interleave skip factor
1Ch WORD volume set sequence number, Intel format
1Eh WORD volume set sequence number, Motorola format
20h BYTE length of file name
21h N BYTEs file name
BYTE (optional) padding if filename is odd length
N BYTEs system data
Format of directory entry (canonicalized):
Offset Size Description
00h BYTE length of XAR in Logical Block Numbers
01h DWORD Logical Block Number of file start
05h WORD size of disk in logical blocks
07h DWORD file length in bytes
0Bh 7 BYTEs date and time
12h BYTE bit flags
13h BYTE interleave size
14h BYTE interleave skip factor
15h WORD volume set sequence number
17h BYTE length of file name
18h 38 BYTEs ASCIZ filename
3Eh WORD file version number
40h BYTE number of bytes of system use data
41h 220 BYTEs system use data
----------2F1510-----------------------------
INT 2F - CD-ROM v2.10+ - SEND DEVICE DRIVER REQUEST
AX = 1510h
CX = CD-ROM drive letter (0 = A, 1 = B, etc)
ES:BX -> CD-ROM device driver request header (see AX=0802h)
----------2F1600-----------------------------
INT 2F - MS WINDOWS - WINDOWS ENHANCED MODE INSTALLATION CHECK
AX = 1600h
Return: AL = 00h if Windows 3.x enhanced mode or Windows/386 2.x not running
AL = 80h if Windows 3.x enhanced mode or Windows/386 2.x not running
AL = 01h if Windows/386 2.x running
AL = FFh if Windows/386 2.x running
AL = anything else
AL = Windows major version number >= 3
AH = Windows minor version number
Note: INT 2F/AH=16h comprises an API for non-Windows programs (DOS device
drivers, TSRs, and applications) to cooperate with multitasking
Windows/386 2.x and Windows 3.x and higher enhanced mode.
certain calls are also supported in the Microsoft 80286 DOS extender in
Windows standard mode
SeeAlso: AX=160Ah,AX=4680h
----------2F1602-----------------------------
INT 2F - MS WINDOWS/386 2.x - GET API ENTRY POINT
AX = 1602h
Return: ES:DI -> Windows/386 2.x API procedure entry point
Notes: this interface is supported in Windows 3.x only for 2.x compatibility
to get the current virtual machine (VM) ID in Windows/386 2.x:
AX = 0000h
ES:DI -> return address
JUMP to address returned from INT 2F/AX=1602h
After JUMP, at return address:
BX = current VM ID.
SeeAlso: AX=0C20h
----------2F1603-----------------------------
INT 2F - RM Nimbus MSDOS 3.3 - ???
AX = 1603h
Return: AX = 5248h ('RH')
DS:SI -> first byte after INT 2F handler in IBMBIO.COM
----------2F1605-----------------------------
INT 2F - MS WINDOWS - WINDOWS ENH MODE & 286 DOSX INIT BROADCAST
AX = 1605h
ES:BX = 0000h:0000h
DS:SI = 0000h:0000h
CX = 0000h
DX = flags
bit 0 = 0 if Windows enhanced-mode initialization
bit 0 = 1 if Microsoft 286 DOS extender initialization
bits 1-15 reserved (undefined)
DI = version number (major in upper byte, minor in lower)
Return: CX = 0000h if okay for Windows to load
CX <> 0 if Windows should not load
ES:BX -> startup info structure (see below)
DS:SI -> virtual86 mode enable/disable callback or 0000h:0000h
Notes: the Windows enhanced mode loader and Microsoft 286 DOS extender will
broadcast an INT 2F/AX=1605h call when initializing. Any DOS device
driver or TSR can watch for this broadcast and return the appropriate
values. If the driver or TSR returns CX <> 0, it is also its
responsibility to display an error message.
each handler must first chain to the prior INT 2F handler with
registers unchanged before processing the call
if the handler requires local data on a per-VM basis, it must store the
returned ES:BX in the "next" field of a startup info structure and
return a pointer to that structure in ES:BX
a single TSR may set the V86 mode enable/disable callback; if DS:SI is
already nonzero, the TSR must fail the initialization by setting CX
nonzero
SeeAlso: AX=1606h,AX=1608h,AX=4B05h
Format of Startup Information Structure:
Offset Size Description
00h 2 BYTEs major, minor version of info structure
02h DWORD pointer to next startup info structure or 0000h:0000h
06h DWORD pointer to ASCIZ name of virtual device file or 0000h:0000h
0Ah DWORD virtual device reference data (only used if above nonzero)
0Eh DWORD pointer to instance data records or 0000h:0000h
Format of one Instance Item in array:
Offset Size Description
00h DWORD address of instance data (end of array if 0000h:0000h)
04h WORD size of instance data
Virtual mode enable/disable procedure called with:
AX = 0000h disable V86 mode
AX = 0001h enable V86 mode
interrupts disabled
Return: CF set on error
CF clear if successful
interrupts disabled
----------2F1606-----------------------------
INT 2F - MS WINDOWS - WINDOWS ENH MODE & 286 DOSX EXIT BROADCAST
AX = 1606h
DX = flags
bit 0 = 0 if Windows enhanced-mode exit
bit 0 = 1 if Microsoft 286 DOS extender exit
bits 1-15 reserved (undefined)
Notes: if the init broadcast fails (AX=1605h returned CX <> 0), then this
broadcast will be issued immediately.
this call will be issued in real mode
SeeAlso: AX=1605h,AX=1609h
----------2F1607-----------------------------
INT 2F - MS WINDOWS - VIRTUAL DEVICE CALL OUT API
AX = 1607h
BX = virtual device ID (see INT 2F/AX=1684h)
CX = (usually) callout subfunction
Return: (usually) AX,BX,CX,DX,ES contain results
Notes: more of a convention than an API, this call specifies a standard
mechanism for Windows enhanced-mode virtual devices (VxD's) to talk
to DOS device drivers and TSRs
see below for details on several virtual devices
SeeAlso: AX=0C20h,AX=1605h,AX=1607h/BX=000Ch,AX=1607h/BX=0014h
SeeAlso: AX=1607h/BX=0015h,AX=1684h
----------2F1607BX000C-----------------------
INT 2F - MS WINDOWS - "VMD" VIRTUAL DEVICE API
AX = 1607h
BX = 000Ch (VxD identifier of "VMD")
Return: CX = nonzero if mouse driver already virtualized
Note: VMD (Virtual Mouse Driver) calls this and then checks whether CX is
nonzero; if yes, it will not automatically virtualize the mouse
driver. This would be used if MOUSE.COM already virtualizes
itself using the Windows API.
SeeAlso: AX=1607h/BX=0014h,AX=1607h/BX=0015h
----------2F1607BX0014-----------------------
INT 2F - MS WINDOWS - "VNETBIOS" VIRTUAL DEVICE API
AX = 1607h
BX = 0014H (VxD identifier of "VNETBIOS")
Return: ES:DI -> 128-byte table specifying VNETBIOS actions for each NetBIOS
command code (see below)
Note: VNETBIOS (Virtual NetBIOS) calls this function to determine whether
the NetBIOS has an extensions Windows should know about
SeeAlso: AX=1607h/BX=000Ch,AX=1607h/BX=0015h
Values for action code:
00h "VN_Unknown" unknown command
04h "VN_No_Map" no memory mapping necessary
08h "VN_Map_In" input buffer is quickly used, so no global mapping needed
0Ch "VN_Map_In" output buffer is quickly used, so no global mapping needed
10h "VN_Map_In_Out" buffer is quickly used, so no global mapping needed
14h "VN_Chain_Send" the chain-send command
18h "VN_Cancel" special case for cancel command
1Ch "VN_Buffer_In" buffer is incoming
20h "VN_Buffer_Out" buffer is outgoing
24h "VN_Buffer_In_Out" buffer used for both incoming and outgoing data
----------2F1607BX0015-----------------------
INT 2F - MS WINDOWS - "DOSMGR" VIRTUAL DEVICE API
AX = 1607h
BX = 0015h (VxD identifier of "DOSMGR")
CX = function
0000h query instance processing
Return: CX = state
0000h not instanced
other instanced (DOS 5.0 kernel returns 0001h)
DX = segment of DOS drivers
(unchanged if call handled by DOS 5.0)
ES:BX -> patch table (see below)
0001h set patches in DOS
DX = bit mask of patch requests
bit 0 enable critical sections
bit 1 NOP setting/checking user ID
bit 2 turn INT 21/AH=3Fh on STDIN into polling loop
bit 3 trap stack fault in "SYSINIT" to WIN386
bit 4 BIOS patch to trap "Insert disk X:" to WIN386
Return: AX = B97Ch
BX = bit mask of patches applied
DX = A2ABh
0002h remove patches in DOS (ignored by DOS 5.0 kernel)
DX = bit mask of patch requests (see function 0001h)
0003h get size of DOS data structures
DX = bit mask of request (only one bit can be set)
bit 0: Current Directory Structure size
Return: if supported request:
AX = B97Ch
CX = size in bytes of requested structure
DX = A2ABh
else:
all registers preserved
0004h determine instanced data structures
Return: AX = B97Ch if supported
DX = A2ABh if supported (DOS 5.0 kernel returns 0000h)
BX = bit mask of instanced items
bit 0: CDS
bit 1: SFT
bit 2: device list
bit 3: DOS swappable data area
0005h get device driver size
ES = segment of device driver
Return: DX:AX = 0000h:0000h on error (not dev. driver segment)
DX:AX = A2ABh:B97Ch if successful
BX:CX = size of device driver in bytes
Notes: the DOS 5.0 kernel provides these calls; earlier versions require a
separate driver
DOSMGR (DOS Manager) will check whether the OEM DOS/BIOS data has
been instanced via INT 2F/AX=1605h and will not perform its own
instancing of the normal DOS/BIOS data if so
SeeAlso: AX=1605h,AX=1607h/BX=000Ch,AX=1607h/BX=0014h,AX=1684h
Format of patch table:
Offset Size Description
00h WORD number of items in patch table
02h N WORDs offsets of ??? to be patched
----------2F1607BX22C0-----------------------
INT 2F - Rational Systems DOS/4GW - ???
AX = 1607h
BX = 22C0h
???
Return: ???
SeeAlso: INT 15/AX=BF02h,INT 15/AX=BF04h
----------2F1608-----------------------------
INT 2F C - MS WINDOWS - WINDOWS ENHANCED MODE INIT COMPLETE BROADCAST
AX = 1608h
Notes: called after all installable devices have been initialized
real-mode software may be called between the Windows enhanced-mode init
call (AX=1605h) and this call; the software must detect this
situation
SeeAlso: AX=1605h,AX=1609h
----------2F1609-----------------------------
INT 2F C - MS WINDOWS - WINDOWS ENHANCED MODE BEGIN EXIT BROADCAST
AX = 1609h
Note: called at the beginning of a normal exit sequence; not made in the
event of a fatal system crash
SeeAlso: AX=1606h,AX=1608h
----------2F160A-----------------------------
INT 2F - MS Windows 3.1 - IDENTIFY WINDOWS VERSION AND TYPE
AX = 160Ah
Return: AX = 0000h if call supported
BX = version (BH=major, BL=minor)
CX = mode (0002h = standard, 0003h = enhanced)
SeeAlso: AX=1600h,AX=4680h
----------2F160B-----------------------------
INT 2F - MS Windows 3.1 - IDENTIFY TSRs
AX = 160Bh
ES:DI -> communication structure (see below) or 0000h:0000h
Return: ES:DI -> communication structure
Desc: this call allows Windows-aware TSRs to make themselves known to
Windows.
Note: the TSR should allocate a communication structure, place the given
ES:DI pointer in the first field, and return a pointer to the new
structure
SeeAlso: AX=1605h,AX=160Ch,AX=4B01h,AX=4B05h
Format of TSR-to-Windows communication structure:
Offset Size Description
00h DWORD pointer to next structure
04h WORD PSP segment
06h WORD API version ID (0100h)
08h WORD EXEC flags
bit 0: "WINEXEC"
bit 1: "LOADLIBRARY"
bit 2: "OPENDRIVER"
0Ah WORD "exec_cmd_show"
0Ch DWORD "exec_cmd"
10h 4 BYTEs reserved (0)
14h DWORD pointer to TSR ID block (see below)
18h DWORD pointer to TSR data block or 0000h:0000h
Format of Norton Utilities 6.0 TSR ID block:
Offset Size Description
00h WORD length of name string
02h N BYTEs name of TSR's executable
----------2F160C-----------------------------
INT 2F - MS Windows 3.1 - DETECT ROMs
AX = 160Ch
???
Return: ???
Note: used by ROM Windows
SeeAlso: AX=160Bh
----------2F1680-----------------------------
INT 2F - MS WINDOWS, DPMI, various - RELEASE CURRENT VIRTUAL MACHINE TIME-SLICE
AX = 1680h
Return: AL = 00h if the call is supported
AL = 80h (unchanged) if the call is not supported
Notes: programs can use this function in idle loops to enhance performance
under multitaskers; this call is supported by MS Windows 3.0, DOS 5+,
DPMI 1.0+, and will be supported in OS/2 2.0 for multitasking DOS
applications
does not block the program; it just gives up the remainder of the time
slice
should not be used by Windows-specific programs
SeeAlso: INT 15/AX=1000h,INT 15/AX=5305h,INT 21/AH=89h,INT 7A/BX=000Ah
----------2F1681-----------------------------
INT 2F - MS WINDOWS 3+ - BEGIN CRITICAL SECTION
AX = 1681h
Notes: used to prevent a task switch from occurring
should be followed by an INT 2F/AX=1682h call as soon as possible
nested calls are allowed, and must be followed by an appropriate number
of "end critical section" calls
not supported in Windows/386 2.x. Get INDOS flag with INT 21/AH=34h and
and increment by hand.
SeeAlso: AX=1682h,INT 15/AX=101Bh,INT 21/AH=34h
----------2F1682-----------------------------
INT 2F - MS WINDOWS 3+ - END CRITICAL SECTION
AX = 1682h
Notes: not supported in Windows/386 2.x. Get InDOS flag with INT 21/AH=34h
and decrement by hand, taking care not to decrement InDOS flag
through zero
SeeAlso: AX=1681h,INT 15/AX=101Ch,INT 21/AH=34h
----------2F1683-----------------------------
INT 2F - MS WINDOWS 3+ - GET CURRENT VIRTUAL MACHINE ID
AX = 1683h
Return: BX = current virtual machine (VM) ID
Notes: Windows itself currently runs in VM 1, but this can't be relied upon
VM IDs are reused when VMs are destroyed
an ID of 0 will never be returned
SeeAlso: AX=1684h,AX=1685h,AX=168Bh
----------2F1684-----------------------------
INT 2F - MS WINDOWS - GET DEVICE API ENTRY POINT
AX = 1684h
BX = virtual device (VxD) ID (see below)
ES:DI = 0000h:0000h
Return: ES:DI -> VxD API entry point, or 0:0 if the VxD does not support an API
Note: some Windows enhanced-mode virtual devices provide services that
applications can access. For example, the Virtual Display Device
(VDD) provides an API used in turn by WINOLDAP.
SeeAlso: AX=1683h
Values for VxD ID:
01h VMM Virtual Machine Manager
02h Debug
03h VPICD Virtual Prog. Interrupt Controller (PIC) Device
04h VDMAD Virtual Direct Memory Access (DMA) Device
05h VTD Virtual Timer Device
06h V86MMGR Virtual 8086 Mode Device
07h PAGESWAP Paging Device
08h Parity
09h Reboot
0Ah VDD Virtual Display Device (GRABBER)
0Bh VSD Virtual Sound Device
0Ch VMD Virtual Mouse Device
0Dh VKD Virtual Keyboard Device
0Eh VCD Virtual COMM Device
0Fh VPD Virtual Printer Device
10h VHD Virtual Hard Disk Device (BlockDev in Windows3.1)
11h VMCPD
12h EBIOS Reserve EBIOS page (e.g., on PS/2)
13h BIOSXLAT Map ROM BIOS API between prot & V86 mode
14h VNETBIOS Virtual NetBIOS Device
15h DOSMGR
16h WINLOAD
17h SHELL
18h VMPoll
19h VPROD
1Ah DOSNET assures network integrity across VMs
1Bh VFD Virtual Floppy Device
1Ch VDD2 Secondary display adapter
1Dh WINDEBUG
1Eh TSRLoad TSR instance utility
1Fh BiosHook BIOS interrupt hooker VxD
20h Int13
21h PageFile Paging File device
22h SCSI
23h MCA_POS
24h SCSIFD SCSI FastDisk device
25h VPEND Pen device
26h APM Advanced Power Management
Note: The high bit of the VxD ID is reserved for future use. The
next 10 bits are the OEM # which is assigned by Microsoft. The
low 5 bits are the device number.
Call VTD.386 entry point with:
AX = 0000h get VTD version number
Return: AH = major version
AL = minor version
AX = 0100h get current clock tick time
Return: EDX:EAX = clock tick time in 840ns units since Windows was
started
AX = 0101h get current system time in milliseconds
Return: EAX = time in milliseconds that Windows has been running
AX = 0102h get current virtual machine time
Return: EAX = cumulative amount of time the virtual machine has
been active, in milliseconds
Note: should only be called directly when TOOLHELP.DLL TimerCount() cannot
be called
----------2F1685-----------------------------
INT 2F - MS WINDOWS - SWITCH VMs AND CALLBACK
AX = 1685h
BX = VM ID of virtual machine to switch to
CX = flags
bit 0 wait until interrupts enabled
bit 1 wait until critical section unowned
bits 2-15 reserved (zero)
DX:SI = priority boost (see VMM.INC)
ES:DI -> FAR procedure to callback
Return: CF set on error
AX = error code
01h invalid VM ID
02h invalid priority boost
03h invalid flags
CF clear if successful
event will be or has been called
Notes: some DOS devices, such as networks, need to call functions in a
specific VM. This call forces the appropriate VM to be installed.
the callback procedure must preserve all registers and return with IRET
SeeAlso: AX=1683h,INT 15/AX=1117h
----------2F1686-----------------------------
INT 2F - DOS Protected-Mode Interface - DETECT MODE
AX = 1686h
Return: AX = 0000h if operating in protected mode under DPMI (INT 31 available)
AX nonzero if in real/V86 mode or no DPMI (INT 31 not available)
SeeAlso: AX=1687h
----------2F1687-----------------------------
INT 2F - DOS Protected-Mode Interface - INSTALLATION CHECK
AX = 1687h
Return: AX = 0000h if installed
BX = flags
bit 0: 32-bit programs supported
CL = processor type (02h=80286, 03h=80386, 04h=80486)
DH = DPMI major version
DL = two-digit DPMI minor version
SI = number of paragraphs of DOS extender private data
ES:DI -> DPMI mode-switch entry point
AX nonzero if not installed
SeeAlso: AX=1686h,INT 38/AH=10h
Call mode switch entry point with:
AX = flags
bit 0: set if 32-bit program
ES = real mode segment of buffer for DPMI private data (ignored if
SI was zero)
Return: CF set on error
program still in real mode
AX = error code (DPMI 1.0+)
8011h unable to allocate all necessary descriptors
8021h 32-bit program specified, but 16-bit DPMI host
CF clear if successful
CS = 16-bit selector corresponding to real-mode CS
SS = selector corresponding to real-mode SS (64K limit)
DS = selector corresponding to real-mode DS (64K limit)
ES = selector to program's PSP (100h byte limit)
FS = GS = 0
high word of ESP = 0 if 32-bit program
program now in protected mode
Note: this entry point is only called for the initial switch to protected
mode
----------2F1688-----------------------------
INT 2F U - MS Windows 3.0, 386MAX v6.01 - GET SELECTOR TO LDT
AX = 1688h
Return: AX = status??? (0000h for 386MAX)
BX = selector for ???
----------2F1689-----------------------------
INT 2F U - MS Windows 3.0+ - KERNEL IDLE CALL
AX = 1689h
???
Return: ???
----------2F168A-----------------------------
INT 2F - DPMI 0.9+ - GET VENDOR-SPECIFIC API ENTRY POINT
AX = 168Ah
DS:(E)SI = selector:offset of ASCIZ vendor name
Return: AL = status
00h successful
ES:(E)DI -> extended API entry point
8Ah unsuccessful
Notes: the vendor name is used to determine which entry point to return; it is
case-sensitive
available in protected mode only
32-bit applications use ESI and EDI, 16-bit applications use SI and DI
this call is present but not documented for DPMI 0.9
SeeAlso: INT 31/AX=0A00h
Vendor names:
"MS-DOS" ??? and 386MAX v6.00+
"386MAX" 386MAX v6.00+
----------2F168B-----------------------------
INT 2F - MS Windows 3.1 - SET FOCUS TO SPECIFIED VIRTUAL MACHINE
AX = 168Bh
???
Return: ???
SeeAlso: AX=1683h
----------2F168C-----------------------------
INT 2F - MS Windows 3.1 - RESTART COMMAND
AX = 168Ch
???
Return: ???
Note: WIN.COM executes specified application
----------2F1700-----------------------------
INT 2F - MS WINDOWS "WINOLDAP" - IDENTIFY WinOldAp VERSION
AX = 1700h
Return: AX = 1700h if this version of WINOLDAP doesn't support clipboard
AX <> 1700h
AL = WINOLDAP major version
AH = WINOLDAP minor version
Notes: WinOldAp (WINOLDAP.MOD) is a Microsoft Windows extension supporting
"old" (character-mode) application access to Dynamic Data Exchange,
menus, and the Windows clipboard.
this installation check DOES NOT follow the format used by other
software
----------2F1701-----------------------------
INT 2F - MS WINDOWS "WINOLDAP" - OPEN CLIPBOARD
AX = 1701h
Return: AX <> 0 success
AX = 0 clipboard is already open
----------2F1702-----------------------------
INT 2F - MS WINDOWS "WINOLDAP" - EMPTY CLIPBOARD
AX = 1702h
Return: AX <> 0 clipboard has been emptied
AX = 0 failure
----------2F1703-----------------------------
INT 2F - MS WINDOWS "WINOLDAP" - SET CLIPBOARD DATA
AX = 1703h
DX = clipboard format supported by WinOldAp:
01h text
02h bitmap
03h metafile picture
04h SYLK
05h DIF
06h TIFF
07h OEM text
ES:BX -> data (see below)
SI:CX = size of data
Return: AX <> 0 data copied into the Clipboard
AX = 0 failure
Format of bitmap:
Offset Size Description
00h WORD type (0000h)
02h WORD width of bitmap in pixels
04h WORD height of bitmap in pixels
06h WORD bytes per line
08h BYTE number of color planes
09h BYTE number of adjacent color bits in pixel
0Ah DWORD pointer to start of data
0Eh WORD width in 0.1mm units
10h WORD height in 0.1mm units
12h N BYTEs bitmap data
Format of metafile picture:
Offset Size Description
00h WORD mapping mode
02h WORD X extent
04h WORD Y extent
06h WORD picture data
----------2F1704-----------------------------
INT 2F - MS WINDOWS "WINOLDAP" - GET CLIPBOARD DATA SIZE
AX = 1704h
DX = clipboard format supported by WinOldAp (see AX=1703h)
Return: DX:AX = size of data in bytes, including any headers
Failure: DX:AX = 0 no data in this format in the Clipboard
----------2F1705-----------------------------
INT 2F - MS WINDOWS "WINOLDAP" - GET CLIPBOARD DATA
AX = 1705h
DX = clipboard format supported by WinOldAp (see AX=1703h)
ES:BX -> buffer
Return: AX <> 0 success
AX = 0 error, or no data in this format in Clipboard
----------2F1708-----------------------------
INT 2F - MS WINDOWS "WINOLDAP" - CloseClipboard
AX = 1708h
Return: AX <> 0 success
AX = 0 failure
----------2F1709-----------------------------
INT 2F - MS WINDOWS "WINOLDAP" - COMPACT CLIPBOARD
AX = 1709h
SI:CX = desired size in bytes
Return: DX:AX = number of bytes in largest block of free memory
Note: WinOldAp is responsible for including the size of any headers
----------2F170A-----------------------------
INT 2F - MS WINDOWS "WINOLDAP" - GET DEVICE CAPABILITIES
AX = 170Ah
DX = GDI information index
00h device driver version
02h device classification
04h width in mm
06h height in mm
08h width in pixels
0Ah height in pixels
0Ch bits per pixel
0Eh number of bit planes
10h number of brushes supported by device
12h number of pens supported by device
14h number of markers supported by device
16h number of fonts supported by device
18h number of colors
1Ah size required for device descriptor
1Ch curve capabilities
1Eh line capabilities
20h polygon capabilities
22h text capabilities
24h clipping capabilities
26h bitblt capabilities
28h X aspect
2Ah Y aspect
2Ch length of hypotenuse of aspect
58h logical pixels per inch of width
5Ah logical pixels per inch of height
Return: AX = integer value of the desired item
device classification
00h vector plotter
01h raster display
02h raster printer
03h raster camera
04h character-stream, PLP
05h Metafile, VDM
06h display-file
curve capabilities
bit 0 circles
bit 1 pie wedges
bit 2 chord arcs
bit 3 ellipses
bit 4 wide lines
bit 5 styled lines
bit 6 wide styled lines
bit 7 interiors
line capabilities
bit 1 polylines
bit 2 markers
bit 3 polymarkers
bit 4 wide lines
bit 5 styled lines
bit 6 wide styled lines
bit 7 interiors
polygon capabilities
bit 0 polygons
bit 1 rectangles
bit 2 trapezoids
bit 3 scanlines
bit 4 wide borders
bit 5 styled borders
bit 6 wide styled borders
bit 7 interiors
text capabilities
bit 0 output precision character
bit 1 output precision stroke
bit 2 clippping precision stroke
bit 3 90-degree character rotation
bit 4 arbitrary character rotation
bit 5 independent X and Y scaling
bit 6 double-size
bit 7 integer scaling
bit 8 continuous scaling
bit 9 bold
bit 10 italic
bit 11 underline
bit 12 strikeout
bit 13 raster fonts
bit 14 vector fonts
bit 15 reserved
clipping capabilities
00h none
01h clipping to rectangles
raster capabilities
bit 0 simple bitBLT
bit 1 device requires banding support
bit 2 device requires scaling support
bit 3 supports >64K bitmap
Note: This function returns the device-capability bits for the given display
----------2F1900-----------------------------
INT 2F U - DOS 4.x only SHELLB.COM - INSTALLATION CHECK
AX = 1900h
Return: AL = 00h not installed
FFh installed
----------2F1901BL00-------------------------
INT 2F U - DOS 4.x only SHELLB.COM - SHELLC.EXE INTERFACE
AX = 1901h
BL = 00h if SHELLC transient
01h if SHELLC resident
DS:DX -> far call entry point for resident SHELLC.EXE
Return: ES:DI -> SHELLC.EXE workspace within SHELLB.COM
Note: SHELLB.COM and SHELLC.EXE are parts of the DOS 4.x shell
----------2F1902-----------------------------
INT 2F U - DOS 4.x only SHELLB.COM - COMMAND.COM INTERFACE
AX = 1902h
ES:DI -> ASCIZ full filename of current batch file, with at least the
final filename element uppercased
DS:DX -> buffer for results
Return: AL = 00h failed, either
(a) final filename element quoted at ES:DI does not match
identity of shell batch file quoted as parameter of most
recent call of SHELLB command, or
(b) no more Program Start Commands available.
AL= FFh success, then:
memory at DS:[DX+1] onwards filled as:
DX+1: BYTE count of bytes of PSC
DX+2: N BYTEs Program Start Command text
BYTE 0Dh terminator
Explanation: COMMAND.COM executes the result of this call in preference to
reading a command from a batch file. Thus the batch file does not
advance in execution for so long as SHELLB provides PSCs from its
workspace. The PSCs are planted in SHELLB workspace by SHELLC, the user
menu interface. The final PSC of a sequence is finished with a
GOTO COMMON, which causes a loop back in the batch file which called
SHELLC so as to execute SHELLC again. The check on batch file name
permits PSCs to CALL nested batch files while PSCs are still stacked
up for subsequent execution.
----------2F1903-----------------------------
INT 2F U - DOS 4.x only SHELLB.COM - COMMAND.COM interface
AX = 1903h
ES:DI -> ASCIZ batch file name as for AX=1902h
Return: AL = FFh if quoted batch file name matches last SHELLB parameter
AL = 00h if it does not
----------2F1904-----------------------------
INT 2F U - DOS 4.x only SHELLB.COM - SHELLB transient to TSR intrface
AX = 1904h
Return: ES:DI -> name of current shell batch file:
WORD number of bytes of name following
BYTEs (8 max) uppercase name of shell batch file
----------2F1A00-----------------------------
INT 2F - DOS 4+ ANSI.SYS - INSTALLATION CHECK
AX = 1A00h
Return: AL = FFh if installed
Notes: AVATAR.SYS also responds to this call
documented for DOS 5+, but undocumented for DOS 4.x
----------2F1A00BX4156-----------------------
INT 2F - AVATAR.SYS - INSTALLATION CHECK
AX = 1A00h
BX = 4156h ('AV')
CX = 4154h ('AT')
DX = 4152h ('AR')
Return: AL = FFh if installed
CF clear
BX = AVATAR protocol level supported
CX = driver type
0000h AVATAR.SYS
4456h DVAVATAR.COM inside DESQview window
DX = 0016h
Notes: AVATAR also identifies itself as ANSI.SYS if BX, CX, or DX differ from
the magic values
AVATAR.SYS is a CON replacement by George Adam Stanislav which
interprets AVATAR command codes in the same way that ANSI interprets
ANSI command codes
----------2F1A01-----------------------------
INT 2F U - DOS 4+ ANSI.SYS internal - GET/SET DISPLAY INFORMATION
AX = 1A01h
CL = function
7Fh for GET
5Fh for SET
DS:DX -> parm block as for INT 21,AX=440Ch,CX=037Fh/035Fh respectively
Return: CF set on error
AX = error code (many non-standard)
CF clear if successful
AX destroyed
Note: presumably this is the DOS IOCTL interface to ANSI.SYS
SeeAlso: AX=1A02h,INT 21/AX=440Ch
----------2F1A02-----------------------------
INT 2F U - DOS 4+ ANSI.SYS internal - MISCELLANEOUS REQUESTS
AX = 1A02h
DS:DX -> parameter block (see below)
Note: DOS 5.0 chains to previous handler if AL > 02h on call
SeeAlso: AX=1A01h
Format of parameter block:
Offset Size Description
00h BYTE subfunction
00h set/reset interlock
01h get /L flag
01h BYTE interlock state
00h=reset, 01h=set
This interlock prevents some of the ANSI.SYS post-processing
in its hook onto INT 10, AH=00h mode set
02h BYTE (returned)
00h if /L not in effect
01h if /L in effect
----------2F1A21-----------------------------
INT 2F - AVATAR.SYS - SET DRIVER STATE
AX = 1A21h (AL='!')
DS:SI -> command string with one or more state characters
CX = length of command string
Return: CF set on error (invalid subfunction)
CF clear if successful
Note: the characters in the state string are interpreted left to right, and
need not be in any particular order
SeeAlso: AX=1A3Fh
Values of state characters:
'a' activate driver
'd' disable driver
'f' use fast screen output
'g' always convert gray keys (+ and -) to function keys
'G' never convert gray keys
'l' convert gray keys only when ScrollLock active
's' use slow screen output
't' Tandy 1000 keyboard (not yet implemented)
----------2F1A3C-----------------------------
INT 2F U - AVATAR.SYS v0.11 - ???
AX = 1A3Ch
???
Return: CX = 0000h
----------2F1A3E-----------------------------
INT 2F U - AVATAR.SYS v0.11 - ???
AX = 1A3Eh
CL = ???
CH = ???
DL = ???
DH = ???
Return: CL = ???
CH = ???
DL = ???
DH = ???
----------2F1A3F-----------------------------
INT 2F - AVATAR.SYS - QUERY DRIVER STATE
AX = 1A3Fh (AL='?')
ES:DI -> buffer
CX = length of buffer in bytes
Return: CF clear
CX = actual size of returned info
Note: the returned information consists of multiple letters whose meanings
are described under AX=1A21h
SeeAlso: AX=1A21h
----------2F1A42BX4156-----------------------
INT 2F - AVATAR Serial Dispatcher - INSTALL IRQ3 HANDLER
AX = 1A42h
BX = 4156h ('AV')
ES:DI -> FAR handler for serial port using IRQ3
DS = data segment needed by handler
Return: AX = 1A42h if ASD not installed
= 0000h if no more room
else handle to use when uninstalling
Notes: the handler need not save/restore registers or signal EOI to the
interrupt controller
the handler should return AX=0000h if the interrupt was meant for it,
and either leave AX unchanged or return a non-zero value otherwise
the most recently installed handler will be called first, continuing
to earlier handlers until one returns AX=0000h
SeeAlso: AX=1A43h,AX=1A62h
----------2F1A43BX4156-----------------------
INT 2F - AVATAR Serial Dispatcher - INSTALL IRQ4 HANDLER
AX = 1A43h
BX = 4156h ('AV')
ES:DI -> FAR handler for serial port using IRQ4
DS = data segment needed by handler
Return: AX = 1A43h if ASD not installed
= 0000h if no more room
else handle to use when uninstalling
Notes: (see AX=1A42h)
SeeAlso: AX=1A42h,AX=1A63h
----------2F1A44BX4156-----------------------
INT 2F - AVATAR.SYS v0.11+ - GET DATA SEGMENT
AX = 1A44h
BX = 4156h ('AV')
Return: AX = 0000h
DS = data segment
CX = size of data segment
Note: AVATAR.SYS calls this function whenever it is invoked. If each
process under a multitasker hooks this function and provides a
separate data segment, AVATAR.SYS becomes fully reentrant.
SeeAlso: AX=1A21h,AX=1A3Fh
----------2F1A52-----------------------------
INT 2F U - AVATAR.SYS v0.11 - GET ???
AX = 1A52h
CX = size of buffer
ES:DI -> buffer
Return: ??? copied into user buffer
Note: the maximum size of the data which may be copied is returned by
AX=1A72h
SeeAlso: AX=1A72h
----------2F1A53-----------------------------
INT 2F U - AVATAR.SYS v0.11 - ???
AX = 1A53h
CL = ??? (00h-05h)
???
Return: ???
----------2F1A62BX4156-----------------------
INT 2F - AVATAR Serial Dispatcher - UNINSTALL IRQ3 HANDLER
AX = 1A62h
BX = 4156h ('AV')
CX = handle for IRQ routine returned by AX=1A42h
SeeAlso: AX=1A42h,AX=1A63h
----------2F1A63BX4156-----------------------
INT 2F - AVATAR Serial Dispatcher - UNINSTALL IRQ4 HANDLER
AX = 1A63h
BX = 4156h ('AV')
CX = handle for IRQ routine returned by AX=1A43h
SeeAlso: AX=1A43h,AX=1A62h
----------2F1A72-----------------------------
INT 2F U - AVATAR.SYS v0.11 - GET ??? SIZE
AX = 1A72h
Return: CX = maximum size of ???
SeeAlso: AX=1A52h
----------2F1A7B-----------------------------
INT 2F U - AVATAR.SYS v0.11 - ???
AX = 1A7Bh
Return: AX = 0000h
CX = 0000h
----------2F1A7D-----------------------------
INT 2F U - AVATAR.SYS v0.11 - ???
AX = 1A7Dh
Return: AX = ???
----------2F1AADDX0000-----------------------
INT 2F U - AVATAR.SYS v0.11 - ???
AX = 1AADh
DX = 0000h
CX = subfunction (00h-0Ch)
???
Return: AX = 0000h if DX was nonzero
???
----------2F1B00-----------------------------
INT 2F U - DOS 4+ XMA2EMS.SYS extension internal - INSTALLATION CHECK
AX = 1B00h
Return: AL = FFh if installed
Note: XMA2EMS.SYS extension is only installed if DOS has page frames to hide.
This extension hooks onto INT 67/AH=58h and returns from that call data
which excludes the physical pages being used by DOS.
SeeAlso: AH=1Bh"FRAME INFO"
----------2F1B-------------------------------
INT 2F U - DOS 4+ XMA2EMS.SYS extension internal - GET HIDDEN FRAME INFORMATION
AH = 1Bh
AL <> 00h
DI = hidden physical page number
Return: AX = FFFFh if failed (no such hidden page)
AX = 0000h if OK, then
ES = segment of page frame
DI = physical page number
Notes: this corresponds to the data edited out of the INT 67/AH=58h call
FASTOPEN makes this call with AL = FFh
SeeAlso: AX=1B00h
----------2F2300-----------------------------
INT 2F - DR-DOS 5.0 GRAFTABL - INSTALLATION CHECK
AX = 2300h
Return: AH = FFh
Note: this installation check does not follow the usual format
SeeAlso: AH=23h
----------2F23-------------------------------
INT 2F - DR-DOS 5.0 GRAFTABL - GET GRAPHICS DATA
AH = 23h
AL nonzero
Return: AH = FFh
ES:BX -> graphics data
SeeAlso: AX=2300h
----------2F2700-----------------------------
INT 2F - DR-DOS 6.0 TaskMAX - INSTALLATION CHECK
AX = 2700h
Return: AL = 00h not installed
= FFh installed
----------2F2701-----------------------------
INT 2F - DR-DOS 6.0 TaskMAX - GET STATUS
AX = 2701h
Return: AX = maximum simultaneous tasks
BX = index into TASK_IDS of current foreground task
CX = currently-active tasks
DX = version number (DR-DOS 6.0 = 0001h)
ES:SI -> TASK_IDS
ES:DI -> name table (array of 8-byte names, NUL-terminated if <8 chars)
Notes: do not attempt to create a new task if CX == AX
the task's index is its position on the task menu, while its ID is the
position within the internal task name table
SeeAlso: AX=2714h,AX=2716h
----------2F2702-----------------------------
INT 2F - DR-DOS 6.0 TaskMAX - GET PER-TASK EMS LIMIT
AX = 2702h
Return: DX = maximum pages INT 67/AH=42h will report available
Note: TaskMAX does not limit EMS allocations other than by limiting the
amount which is reported as being available at a given time
SeeAlso: AX=2703h,INT 67/AH=42h
----------2F2703-----------------------------
INT 2F - DR-DOS 6.0 TaskMAX - SET PER-TASK EMS LIMIT
AX = 2703h
DX = maximum pages INT 67/AH=42h should report available
Return: DX = new maximum for reporting
SeeAlso: AX=2702h,INT 67/AH=42h
----------2F2704-----------------------------
INT 2F - DR-DOS 6.0 TaskMAX - REGISTER/UNREGISTER TASK MANAGER
AX = 2704h
DL = subfunction
00h unregister task manager
01h register task manager
Return: DL = status
00h registered
01h unregistered
Notes: a task manager replaces TaskMAX's menu system with its own user
interface; while one is registered, the TaskMAX hotkeys and
Ctrl-Alt-Del invoke the manager rather than the built-in menu system
unregister the task manager before terminating it
SeeAlso: AX=2705h
----------2F2705-----------------------------
INT 2F - DR-DOS 6.0 TaskMAX - ENABLE/DISABLE DIRECT SWITCHING
AX = 2705h
DL = subfunction
00h disable keystrokes for switching to next/prev/specified task
01h enable
Return: nothing
Note: should only be called by a registered task manager (see AX=2704h)
SeeAlso: AX=2704h,AX=2706h
----------2F2706-----------------------------
INT 2F - DR-DOS 6.0 TaskMAX - SWITCH TO SPECIFIED TASK
AX = 2706h
DX = task index (see AX=2701h) of task to be activated
Return: DX = task index of previously-active task
SeeAlso: AX=2705h,AX=2707h,AX=2715h
----------2F2707-----------------------------
INT 2F - DR-DOS 6.0 TaskMAX - CREATE NEW TASK
AX = 2707h
DS:DX -> ASCIZ pathname of executable
ES:BX -> parameter block (see below)
CX = number of ticks before automatic return to task manager
(0000h = run until termination or explicitly switched)
Return: DX = new task's task index (FFFFh if task terminated)
SeeAlso: AX=2706h,AX=2708h
Format of parameter block:
Offset Size Description
00h WORD reserved, should be 0000h
02h DWORD pointer to command tail to be copied into child's PSP
06h DWORD pointer to first FCB to be copied into child's PSP
0Ah DWORD pointer to second FCB to be copied into child's PSP
----------2F2708-----------------------------
INT 2F - DR-DOS 6.0 TaskMAX - DELETE TASK
AX = 2708h
DX = task index
Return: DX = FFFFh (task deleted)
Notes: this call should only be used for abnormal task termination, after
first checking for open files with AX=270Ch; should not be used
with programs that allocate EMS or XMS memory
switches to specified task first
SeeAlso: AX=2707h
----------2F2709-----------------------------
INT 2F - DR-DOS 6.0 TaskMAX - NAME TASK
AX = 2709h
DX = task index
DS:SI -> 8-byte name (8 NULs = remove name)
Return: AL = task flags
00h ID unused or task terminated
01h ID in use, task name table entry valid
81h ID in use, task name fixed
BX = task ID
ES:DI -> name in task name table (see AX=2701h)
Note: the task retains the given name until it terminates or the name is
removed by specifying a name of 8 NULs.
SeeAlso: AX=2701h,AX=2707h
----------2F270A-----------------------------
INT 2F - DR-DOS 6.0 TaskMAX - CONVERT TASK INDEX TO TASK ID
AX = 270Ah
DX = task index
Return: DX = task ID (FFFFh if index invalid)
Note: task IDs stay constant, while indexes can change when other tasks are
deleted
SeeAlso: AX=2701h,AX=270Bh
----------2F270B-----------------------------
INT 2F - DR-DOS 6.0 TaskMAX - CONVERT TASK ID TO TASK INDEX
AX = 270Bh
DX = task ID
Return: DX = task index (FFFFh if task not active)
SeeAlso: AX=270Ah
----------2F270C-----------------------------
INT 2F - DR-DOS 6.0 TaskMAX - CHECK OPEN FILES
AX = 270Ch
DX = task index
Return: AX = number of files currently open for specified task
SeeAlso: AX=2708h
----------2F270D-----------------------------
INT 2F - DR-DOS 6.0 TaskMAX - CHECK IF TASK RUNNING PRIMARY COMMAND INTERPRETER
AX = 270Dh
DX = task index
Return: DX = status
0000h if primary command interpreter (COMMAND.COM, etc.) running
0001h if not in root shell for task
Note: TaskMAX will return 0001h if the specified task has spawned another
command interpreter with AX=2707h
SeeAlso: AX=2707h,AX=270Ch
----------2F270E-----------------------------
INT 2F - DR-DOS 6.0 TaskMAX - GET/SET TEXT PASTE LEAD-IN
AX = 270Eh
CX = length of string (max 15 keystrokes, 0000h to get current string)
DS:SI -> pasting lead-in string (character/scan-code pairs)
Return: ES:DI -> current lead-in string
Note: the specified sequence of keystrokes is sent to the application before
every line of a text-mode spreadsheet paste
SeeAlso: AX=270Fh,AX=2710h,AX=2713h
----------2F270F-----------------------------
INT 2F - DR-DOS 6.0 TaskMAX - GET/SET NUMERIC PASTE LEAD-IN
AX = 270Fh
CX = length of string (max 15 keystrokes, 0000h to get current string)
DS:SI -> pasting lead-in string (character/scan-code pairs)
Return: ES:DI -> current lead-in string
Note: the specified sequence of keystrokes is sent to the application before
every number in a numeric-mode spreadsheet paste
SeeAlso: AX=270Eh,AX=2710h,AX=2711h,AX=2713h
----------2F2710-----------------------------
INT 2F - DR-DOS 6.0 TaskMAX - GET/SET PASTE LINE TERMINATOR STRING
AX = 2710h
CX = length of string (max 15 keystrokes, 0000h to get current string)
DS:SI -> pasting lead-in string (character/scan-code pairs)
Return: ES:DI -> current lead-in string
Note: the specified sequence of keystrokes is sent to the application after
every line of a spreadsheet paste operation
SeeAlso: AX=270Eh,AX=270Fh,AX=2713h
----------2F2711-----------------------------
INT 2F - DR-DOS 6.0 TaskMAX - GET/SET NUMERIC PASTE DECIMAL POINT
AX = 2711h
DX = ASCII code for separator (FFFFh to get current)
Return: DL = current separator character
SeeAlso: AX=270Fh
----------2F2712-----------------------------
INT 2F - DR-DOS 6.0 TaskMAX - INITIATE EXPORTING TASK DATA
AX = 2712h
DX = task index
----------2F2713-----------------------------
INT 2F - DR-DOS 6.0 TaskMAX - INITIATE PASTE OPERATION
AX = 2713h
DX = task index
CX = past mode
0000h alphanumeric
0001h numeric
0002h text
SeeAlso: AX=270Eh,AX=270Fh,AX=2710h,AX=2711h
----------2F2714-----------------------------
INT 2F - DR-DOS 6.0 TaskMAX - GET SWAP SPACE INFO
AX = 2714h
Return: CX = total KB of swap space
DX = available KB of swap space
SeeAlso: AX=2701h
----------2F2715-----------------------------
INT 2F - DR-DOS 6.0 TaskMAX - SWITCH TO TASK MANAGER
AX = 2715h
Return: only after calling task is again selected
SeeAlso: AX=2706h
----------2F2716-----------------------------
INT 2F - DR-DOS 6.0 TaskMAX - GET PASTE BUFFER STATUS
AX = 2716h
Return: AX = 0000h if AX=2716h,AX=2717h,AX=2718h supported
CX = bytes in paste buffer
DX = current generation number (updated after every copy operation)
SeeAlso: AX=2701h,AX=2713h,AX=2714h,AX=2717h,AX=2718h
----------2F2717-----------------------------
INT 2F - DR-DOS 6.0 TaskMAX - PASTE DATA DIRECTLY TO APPLICATION BUFFER
AX = 2717h
CX = bytes in destination buffer
ES:DI -> destination buffer
Return: AX = 0000h if function supported
CX = bytes actually copied (FFFFh if buffer too small)
DX = current generation number for paste buffer
Note: the destination buffer may be too small if another task adds more data
to the paste buffer after the AX=2716h call but before this call
SeeAlso: AX=2713h,AX=2716h,AX=2718h
----------2F2718-----------------------------
INT 2F - DR-DOS 6.0 TaskMAX - COPY DATA DIRECTLY INTO PASTE BUFFER
AX = 2718h
CX = bytes in source buffer
DS:SI -> source buffer (plain ASCII, lines terminated with CR LF)
Return: AX = 0000h if function supported
CX = bytes actually copied
DX = current generation number for paste buffer
SeeAlso: AX=2712h,AX=2716h,AX=2717h
----------2F2A-------------------------------
INT 2F - Gammafax DOS Dispatcher INTERFACE
AH = 2Ah
Note: details not available at this time
SeeAlso: AX=8000h"FaxBIOS",AX=C000h"MTEZ",AX=CB00h,AX=CBDDh,INT 66"BitFax"
----------2F3900-----------------------------
INT 2F - Kingswood TSR INTERFACE - COMPATIBILITY MODE
AX = 3900h
Return: AL = status
00h not installed
FFh one or more TSRs using this interface is installed
Note: this function is provided to that the multiplex number will appear used
to other programs
SeeAlso: AH=39h/BL=00h
----------2F39--BL00-------------------------
INT 2F - Kingswood TSR INTERFACE - INSTALLATION CHECK
AH = 39h
BL = 00h
AL = TSR ID number (01h-FFh, currently only 01h-0Eh used) (see below)
Return: AL = status
00h not installed
FFh installed
DX = segment address of resident module
Note: All of Kingswood Software's TSRs use this interface. Usually the
resident module is installed by allocating a block of upper memory,
setting its owner ID to 0008h (DOS data), and filling the MCB name
field with the TSR's name.
SeeAlso: AX=3900h,AH=39h/BL=01h
Values for TSR ID number:
01h TSR Windows
02h NOBUSY
03h CD STACK
04h DISK WATCH
05h PUSHBP
06h ALIAS
07h KEYMACRO
08h SLOWDOWN
09h ANSIGRAB
0Ah TEE
0Bh FASTMOUS
0Ch EXTWILD
0Dh BREAKOUT
0Eh STOPDISK
Format of TSR modules:
Offset Size Description
00h 4 BYTEs signature "FTSR"
04h WORD segment address of this module
06h WORD number of words to skip (usually 0000h if no PSP present)
08h N WORDs module-defined data that must be at a fixed segment offset
(usually only a PSP if file access is required)
5N BYTEs interrupt list (see below)
BYTE FFh terminator
Format of interrupt list entry:
Offset Size Description
00h BYTE interrupt number (00h-FEh)
01h WORD offset within segment of DWORD pointer to previous interrupt
03h WORD offset within segment of begin of interrupt handler code
----------2F39--BL01-------------------------
INT 2F - Kingswood TSR INTERFACE - REMOVAL CHECK
AH = 39h
BL = 01h
AL = TSR ID number (01h-FFh) (see AH=39h/BL=00h)
Return: AL = status
00h not ready to be removed
FFh resident module may be removed by deassigning the interrupts
hooked by the TSR and deallocating the TSR's memory block
AH,BX,CX,DX,ES may be destroyed
SeeAlso: AX=3900h,AH=39h/BL=00h
----------2F39-------------------------------
INT 2F - Kingswood TSR INTERFACE - APPLICATION-SPECIFIC FUNCTION CALLS
AH = 39h
BL = function number (02h-FFh)
AL = TSR ID number (01h-FFh)
CX,DX,SI,DI,DS,ES may contain parameters
Return: as appropriate for the called function
SeeAlso: AX=3900h,AH=39h/BL=00h,AX=3901h/BL=02h
----------2F3901BL02-------------------------
INT 2F - Kingswood TSR Windows - OPEN WINDOW
AX = 3901h
BL = 02h
Return: AX = error code (0000h if successful)
Notes: opens the next TSR window on top of any others. Only three
TSR windows can be opened at any one time. The three windows
are all 40x11 characters, partly overlapping.
SeeAlso: AH=39h/BL=00h,AX=3901h/BL=03h,AX=3901h/BL=05h,AX=3901h/BL=06h
----------2F3901BL03-------------------------
INT 2F - Kingswood TSR Windows - HIDE WINDOWS
AX = 3901h
BL = 03h
Return: AX = error code (0000h if successful)
Notes: Hide any visible TSR windows from view.
SeeAlso: AH=39h/BL=00h,AX=3901h/BL=02h,AX=3901h/BL=05h
----------2F3901BL04-------------------------
INT 2F - Kingswood TSR Windows - SHOW WINDOWS
AX = 3901h
BL = 04h
Return: AX = error code (0000h if successful)
Notes: Re-display all TSR windows after a HIDE WINDOWS call.
SeeAlso: AH=39h/BL=00h,AX=3901h/BL=02h,AX=3901h/BL=03h
----------2F3901BL05-------------------------
INT 2F - Kingswood TSR Windows - CLOSE WINDOW
AX = 3901h
BL = 05h
Return: AX = error code (0000h if successful)
Notes: Close the last opened TSR window.
SeeAlso: AH=39h/BL=00h,AX=3901h/BL=02h
----------2F3901BL06-------------------------
INT 2F - Kingswood TSR Windows - SET WINDOW TITLE
AX = 3901h
BL = 06h
DS:SI -> title string
Return: AX = error code (0000h if successful)
SeeAlso: AH=39h/BL=00h,AX=3901h/BL=02h
----------2F3901BL07-------------------------
INT 2F - Kingswood TSR Windows - POSITION CURSOR
AX = 3901h
BL = 07h
CH = Y coordinate (0-10)
CL = X coordinate (0-39)
Return: AX = error code (0000h if successful)
Note: the hardware cursor is always disabled when a TSR window is opened;
this call only sets a text position
SeeAlso: AH=39h/BL=00h,AX=3901h/BL=08h,AX=3901h/BL=09h
----------2F3901BL08-------------------------
INT 2F - Kingswood TSR Windows - DISPLAY STRING
AX = 3901h
BL = 08h
DS:SI -> string
Return: AX = error code (0000h if successful)
Notes: The text is not clipped.
This routine understands Tab, NewLine and Carriage Return
SeeAlso: AH=39h/BL=00h,AX=3901h/BL=07h
----------2F3901BL09-------------------------
INT 2F - Kingswood TSR Windows - SCROLL WINDOW
AX = 3901h
BL = 09h
CL = scroll direction: 00h up, FFh down, 00h clear window
Return: AX = error code (0000h if successful)
SeeAlso: AH=39h/BL=00h,AX=3901h/BL=07h
----------2F3901BL0A-------------------------
INT 2F - Kingswood TSR Windows - SOUND BEEPER
AX = 3901h
BL = 0Ah
DX = sound divisor, or 0 for silence.
(divide 1843200 by required frequency to get value for DX)
CL = sound length in 18.2 Hz clock ticks
Return: AX = error code (0000h if successful)
SeeAlso: AH=39h/BL=00h
----------2F3901BL0B-------------------------
INT 2F - Kingswood TSR Windows - ADD OR REMOVE USER
AX = 3901h
BL = 0Bh
CL = number of users increment: +1 if adding a new user
-1 if removing a user
Return: AX = error code (0000h if successful)
Note: the TSR windows resident module may only be removed when the internal
user count is zero
SeeAlso: AH=39h/BL=00h,AX=3901h/BL=02h
----------2F4000-----------------------------
INT 2F - Windows 3.x (OS/2 2.x???) - GET VIRTUAL DEVICE DRIVER (VDD) CAPABLTIES
AX = 4000h
Return: AL = 01h does not virtualize video access
02h virtualizes the video when in text mode
03h virtualizes the video when in text mode or single plane
graphics modes
04h virtualizes the video when in text mode, single plane
graphics modes, and VGA multiplane modes
FFh virtualizes the video fully
Note: this function is used by display drivers to find out what capabilities
exist for the VDD driver and also trigger then VDD driver to call
functions 4005h and 4006h. This function also gives the Video Driver
hardware access to the video registers.
----------2F4001-----------------------------
INT 2F C - OS/2 compatibility box - SWITCHING DOS TO BACKGROUND
AX = 4001h
Note: called by OS/2 when the DOS box is about to be placed in the background
and the video driver should save any necessary state
SeeAlso: AX=4002h,AX=4005h
----------2F4002-----------------------------
INT 2F C - OS/2 compatibility box - SWITCHING DOS TO FOREGROUND
AX = 4002h
Note: called by OS/2 when the DOS box is about to be placed in the foreground
and the video driver should restore the previously-saved state
SeeAlso: AX=4001h,AX=4006h
----------2F4003-----------------------------
INT 2F - Windows 3.x - ENTERING VIDEO DRIVER CRITICAL SECTION
AX = 4003h
Note: This critical section must be exited within 1 second.
SeeAlso: AX=4004h
----------2F4004-----------------------------
INT 2F - Windows 3.x - EXITING VIDEO DRIVER CRITICAL SECTION
AX = 4004h
SeeAlso: AX=4003h
----------2F4005-----------------------------
INT 2F C - Windows 3.x - SWITCHING DOS TO BACKGROUND
AX = 4005h
Note: called by Windows when the DOS box is about to be placed in the
background and the video driver should save any necessary state
information
SeeAlso: AX=4001h,AX=4006h
----------2F4006-----------------------------
INT 2F C - Windows 3.x - SWITCHING DOS TO FOREGROUND
AX = 4006h
Note: called by Windows when the DOS box is about to be placed in the
foreground and the video driver should restore any necessary state
information
SeeAlso: AX=4002h,AX=4005h
----------2F4007-----------------------------
INT 2F - Windows 3.x - ENABLE VDD TRAPPING OF VIDEO REGISTERS
AX = 4007h
----------2F4040-----------------------------
INT 2F - PharLap 286|DOS-Extender Lite v2.5 - ???
AX = 4040h
Return: BX:CX -> ???
----------2F41-------------------------------
INT 2F - LAN Manager 2.0 DOS Enhanced NETPOPUP.EXE - NETWORK POP-UP SERVICE
AH = 41h
???
Return: ???
Note: LAN Manager enhanced mode adds features beyond the standard redirector
file/printer services
SeeAlso: AX=118Ah,AH=42h,AH=4Bh
----------2F42-------------------------------
INT 2F - LAN Manager 2.0 DOS Enhanced MSRV.EXE - MESSENGER SERVICE
AH = 42h
???
Return: ???
Note: LAN Manager enhanced mode adds features beyond the standard redirector
file/printer services
SeeAlso: AX=118Ah,AH=41h,AH=4Bh
----------2F4300-----------------------------
INT 2F - EXTENDED MEMORY SPECIFICATION (XMS) - INSTALLATION CHECK
AX = 4300h
Return: AL = 80h XMS driver installed
AL <> 80h no driver
Notes: XMS gives access to extended memory and noncontiguous/nonEMS memory
above 640K
this installation check DOES NOT follow the format used by other
software
SeeAlso: AX=4310h
---------------------------------------------
INT 2F U - HIMEM.SYS v2.77+ - GET A20 HANDLER NUMBER
AX = 4308h
Return: AL = 43h if supported
BL = A20 handler number (value of /MACHINE:nn switch)
BH = AT A20 switch time (00h medium, 01h fast, 02h slow)
SeeAlso: AX=4330h
----------2F4310-----------------------------
INT 2F - EXTENDED MEMORY SPECIFICATION (XMS) - GET DRIVER ADDRESS
AX = 4310h
Return: ES:BX -> driver entry point
Note: HIMEM.SYS v2.77 chains to previous handler if AH is not 00h or 10h
SeeAlso: AX=4300h
Perform a FAR call to the driver entry point with AH set to the function code
AH function
00h Get XMS version number
Return: AX = XMS version (in BCD, AH=major, AL=minor)
BX = internal revision number
DX = 0001h if HMA (1M to 1M + 64K) exists
0000h if HMA does not exist
01h Request High Memory Area (1M to 1M + 64K)
DX = memory in bytes (for TSR or device drivers)
FFFFh if application program
Return: AX = 0001h success
= 0000h failure
BL = error code (80h,81h,90h,91h,92h) (see below)
02h Release High Memory Area
Return: AX = 0001h success
= 0000h failure
BL = error code (80h,81h,90h,93h) (see below)
03h Global enable A20, for using the HMA
Return: AX = 0001h success
= 0000h failure
BL = error code (80h,81h,82h) (see below)
04h Global disable A20
Return: AX = 0001h success
= 0000h failure
BL = error code (80h,81h,82h,94h) (see below)
05h Local enable A20, for direct access to extended memory
Return: AX = 0001h success
= 0000h failure
BL = error code (80h,81h,82h) (see below)
06h Local disable A20
Return: AX = 0001h success
= 0000h failure
BL = error code (80h,81h,82h,94h) (see below)
07h Query A20 state
Return: AX = 0001h enabled
= 0000h disabled
BL = error code (00h,80h,81h) (see below)
08h Query free extended memory, not counting HMA
BL = 00h (some implementations leave BL unchanged on success)
Return: AX = size of largest extended memory block in K
DX = total extended memory in K
BL = error code (00h,80h,81h,A0h) (see below)
09h Allocate extended memory block
DX = Kbytes needed
Return: AX = 0001h success
DX = handle for memory block
= 0000h failure
BL = error code (80h,81h,A0h) (see below)
0Ah Free extended memory block
DX = handle of block to free
Return: AX = 0001h success
= 0000h failure
BL = error code (80h,81h,A2h,ABh) (see below)
0Bh Move extended memory block
DS:SI -> EMM structure (see below)
Note: if either handle is 0000h, the corresponding offset is
considered to be an absolute segment:offset address in
directly addressable memory
Return: AX = 0001h success
= 0000h failure
BL = error code (80h-82h,A3h-A9h) (see below)
0Ch Lock extended memory block
DX = handle of block to lock
Return: AX = 0001h success
DX:BX = 32-bit linear address of locked block
= 0000h failure
BL = error code (80h,81h,A2h,ACh,ADh) (see below)
0Dh Unlock extended memory block
DX = handle of block to unlock
Return: AX = 0001h success
= 0000h failure
BL = error code (80h,81h,A2h,AAh) (see below)
0Eh Get handle information
DX = handle for which to get info
Return: AX = 0001h success
BH = block's lock count
BL = number of free handles left
DX = block size in K
= 0000h failure
BL = error code (80h,81h,A2h) (see below)
0Fh Reallocate extended memory block
DX = handle of block
BX = new size of block in K
Return: AX = 0001h success
= 0000h failure
BL = error code (80h,81h,A0h-A2h,ABh) (see below)
10h Request upper memory block (nonEMS memory above 640K)
DX = size of block in paragraphs
Return: AX = 0001h success
BX = segment address of UMB
DX = actual size of block
= 0000h failure
BL = error code (80h,B0h,B1h) (see below)
DX = largest available block
11h Release upper memory block
DX = segment address of UMB to release
Return: AX = 0001h success
= 0000h failure
BL = error code (80h,B2h) (see below)
12h (XMS v3.0) Reallocate upper memory block
DX = segment address of UMB to resize
BX = new size of block in paragraphs
Return: AX = 0001h success
= 0000h failure
BL = error code (80h,B0h,B2h) (see below)
34h (QEMM 5.11 only, undocumented) ???
44h (QEMM 5.11 only, undocumented) ???
88h (XMS v3.0) Query free extended memory
Return: EAX = largest block of extended memory, in K
BL = status
00h success
80h not implemented (i.e. on a 286 system)
81h VDISK detected
A0h all extended memory allocated
ECX = physical address of highest byte of memory
(valid even on error codes 81h and A0h)
EDX = total Kbytes of extended memory (0 if status A0h)
89h (XMS v3.0) Allocate any extended memory
EDX = Kbytes needed
Return: AX = 0001h success
DX = handle for allocated block (free with AH=0Ah)
= 0000h failure
BL = status (80h,81h,A0h,A1h,A2h) (see below)
8Eh (XMS v3.0) Get extended EMB handle information
DX = handle
Return: AX = 0001h success
BH = block's lock count
CX = number of free handles left
EDX = block size in K
= 0000h failure
BL = status (80h,81h,A2h) (see below)
8Fh (XMS v3.0) Reallocate any extended memory block
DX = unlocked handle
EBX = new size in K
Return: AX = 0001h success
= 0000h failure
BL = status (80h,81h,A0h-A2h,ABh) (see below)
Notes: HIMEM.SYS requires at least 256 bytes free stack space
the XMS driver need not implement functions 10h through 12h to be
considered compliant with the standard
BUG: HIMEM v3.03-3.07 crash on an 80286 machine if any of the 8Xh functions
are called
Format of EMM structure:
Offset Size Description
00h DWORD number of bytes to move (must be even)
04h WORD source handle
06h DWORD offset into source block
0Ah WORD destination handle
0Ch DWORD offset into destination block
Notes: if source and destination overlap, only forward moves (source base
less than destination base) are guaranteed to work properly
if either handle is zero, the corresponding offset is interpreted
as a real-mode address referring to memory directly addressable
by the processor
Error codes returned in BL:
00h successful
80h function not implemented
81h Vdisk was detected
82h an A20 error occurred
8Eh a general driver error
8Fh unrecoverable driver error
90h HMA does not exist
91h HMA is already in use
92h DX is less than the /HMAMIN= parameter
93h HMA is not allocated
94h A20 line still enabled
A0h all extended memory is allocated
A1h all available extended memory handles are allocated
A2h invalid handle
A3h source handle is invalid
A4h source offset is invalid
A5h destination handle is invalid
A6h destination offset is invalid
A7h length is invalid
A8h move has an invalid overlap
A9h parity error occurred
AAh block is not locked
ABh block is locked
ACh block lock count overflowed
ADh lock failed
B0h only a smaller UMB is available
B1h no UMB's are available
B2h UMB segment number is invalid
---------------------------------------------
INT 2F UC - HIMEM.SYS v2.77+ - GET EXTERNAL A20 HANDLER ADDRESS
AX = 4330h
Return: AL = 80h if external A20 handler provided
ES:BX -> external A20 handler
CL = ???
Note: HIMEM.SYS calls this function to allow an external program to provide
an A20 handler (i.e. to support a machine not supported by HIMEM
itself)
External A20 handler called with:
AX = function
0000h disable A20
0001h enable A20
Return: AX = status
0000h failure
0001h successful
SeeAlso: AX=4308h,AX=4310h
----------2F44-------------------------------
INT 2F U - ???
AH = 44h
AL = function (at least 0Bh, 15h, 17h)
???
Return: ???
Note: called by Codeview for Windows
SeeAlso: AH=86h
----------2F4500-----------------------------
INT 2F U - Microsoft Profiler (PROF.COM/VPROD.386) - INSTALLATION CHECK
AX = 4500h
Return: AL = 01h if PROF.COM installed
AL = 02h if VPROD.386 installed
SeeAlso: AX=4501h,AX=4502h
----------2F4501-----------------------------
INT 2F U - Microsoft Profiler (PROF.COM/VPROD.386) - SETUP PROFILER
AX = 4501h
BX = CSIPS buffer size in KB (first parameter for ProfSetup)
CX = output limit in KB (second parameter for ProfSetup)
Note: this call is not supported by PROF.COM
SeeAlso: AX=4502h,AX=4503h
----------2F4502-----------------------------
INT 2F U - Microsoft Profiler (PROF.COM/VPROD.386) - SET SAMPLING RATE
AX = 4502h
BL = sampling rate for PROF.COM (0 < BL <= 13)
(01h = 8192/s, 04h = 1024/s, 08h = 32/s, 0Dh = 1/s)
CX = sampling rate for VPROD.386
Note: for PROF.COM, this programs the CMOS clock by setting BL+2 as the
low four bits of CMOS register 0Ah. The interruption rate is
1 SHL (15 - BL) per second.
SeeAlso: AX=4501h,AX=4503h
----------2F4503-----------------------------
INT 2F U - Microsoft Profiler (PROF.COM/VPROD.386) - START PROFILING
AX = 4503h
Notes: Profiling is also turned on by the key combinations
LeftShift + RightShift + Alt
LeftShift + RightShift + Ctrl
for PROF.COM, this call programs the CMOS clock by reading register
0Ch, and setting bit 6 of register 0Bh. It then makes sure that IRQ8
is unmasked
SeeAlso: AX=4504h
----------2F4504-----------------------------
INT 2F U - Microsoft Profiler (PROF.COM/VPROD.386) - STOP PROFILING
AX = 4504h
Notes: profiling is also turned off by the key combination
LeftShift + RightShift
for PROF.COM, this programs the CMOS clock by reading register 0Ch
and clearing bit 6 of register 0Bh. It then masks IRQ8.
SeeAlso: AX=4503h,AX=4505h,AX=4506h,AX=4507h
----------2F4505-----------------------------
INT 2F U - Microsoft Profiler (PROF.COM/VPROD.386) - CLEAR PROFILING DATA
AX = 4505h
SeeAlso: AX=4503h,AX=4504h,AX=4506h
----------2F4506-----------------------------
INT 2F U - Microsoft Profiler (PROF.COM/VPROD.386) - "ProfFlush"
AX = 4506h
SeeAlso: AX=4505h,AX=4507h
----------2F4507-----------------------------
INT 2F U - Microsoft Profiler (PROF.COM/VPROD.386) - "ProfFinish"
AX = 4507h
Note: this call is essentially a "ProfStop" (AX=4504h) followed by
"ProfFlush" (AX=4506h)
SeeAlso: AX=4504h,AX=4505h,AX=4506h
----------2F4508-----------------------------
INT 2F U - Microsoft Profiler (PROF.COM/VPROD.386) - ALTERNATE SEGDEBUG IFACE
AX = 4508h
BX = ordinal (or 0000h)
CX = segment
DX = instance (or 0000h)
SI = type (or 0000h)
ES:DI -> ASCIZ module name
Notes: this call is an alternate entry to the profiler's SEGDEBUG
interface, but only to function 0, for notifying the profiler of
each new segment loaded. The SHOWHITS utility then examines the
profiler's output files (CSIPS.DAT and SEGENTRY.DAT) in conjunction
with symbol files to provide information in a useful form.
this call does not have a corresponding Windows function
SeeAlso: AX=4500h
----------2F4601-----------------------------
INT 2F U - DOS 5.0 kernel - ???
AX = 4601h
Return: ???
Note: copies the MCB following the caller's PSP memory block into DOS data
segment
SeeAlso: AX=4602h
----------2F4602-----------------------------
INT 2F U - DOS 5.0 kernel - ???
AX = 4602h
Return: ???
Note: copies previously copied MCB from DOS data segment into MCB following
caller's PSP memory block
SeeAlso: AX=4601h
----------2F46-------------------------------
INT 2F U - ???
AH = 46h
AL = subfunction (03h,04h)
Return: ???
Note: these two subfunctions are called by MS Windows 3.0
----------2F4653CX0002-----------------------
INT 2F - F-PROT v1.x only - F-LOCK.EXE
AX = 4653h
CX = 0002h
BX = subfunction
0000h installation check
Return: AX = FFFFh
0001h uninstall
Return: AX,BX,ES destroyed
0002h disable (v1.08 and below only)
0003h enable (v1.08 and below only)
Note: F-LOCK is part of the F-PROT virus/trojan protection package by Fridrik
Skulason
SeeAlso: AX=4653h/CX=0003h,AX=CA00h,INT 21/AX=4BEEh
----------2F4653CX0003-----------------------
INT 2F - F-PROT v1.x only - F-XCHK.EXE
AX = 4653h
CX = 0003h
BX = subfunction
0000h installation check
Return: AX = FFFFh
0001h uninstall
Return: AX,BX,ES destroyed
Note: F-XCHK is part of the F-PROT virus/trojan protection package by Fridrik
Skulason
SeeAlso: AX=4653h/CX=0002h,AX=4653h/CX=0004h,AX=CA00h
----------2F4653CX0004-----------------------
INT 2F - F-PROT v1.x only - F-POPUP.EXE
AX = 4653h
CX = 0004h
BX = subfunction
0000h installation check
Return: AX = FFFFh
0001h uninstall
Return: AX,BX,ES destroyed
0002h disable (v1.08 and below only)
display message (v1.14+)
other registers: ???
0003h enable (v1.08 and below only)
display message (v1.14+)
other registers: ???
Return: AX = key pressed by user
Note: F-POPUP is part of the F-PROT virus/trojan protection package by
Fridrik Skulason
SeeAlso: AX=4653h/CX=0003h,AX=4653h/CX=0005h,AX=CA00h
----------2F4653CX0005-----------------------
INT 2F - F-PROT v1.x only - F-DLOCK.EXE
AX = 4653h
CX = 0005h
BX = subfunction
0000h installation check
Return: AX = FFFFh
0001h uninstall
Return: AX,BX,ES destroyed
Note: F-DLOCK is part of the F-PROT virus/trojan protection package by
Fridrik Skulason
SeeAlso: AX=4653h/CX=0004h,AX=CA00h
----------2F4680-----------------------------
INT 2F U - MS Windows v3.0 - INSTALLATION CHECK
AX = 4680h
Return: AX = 0000h MS Windows 3.0 running in real (/R) or standard (/S) mode,
or DOS 5 DOSSHELL active
nonzero no Windows, Windows prior to 3.0, or Windows3 in enhanced
mode
Note: Windows 3.1 finally provides an installation check which works in all
modes (see AX=160Ah)
SeeAlso: AX=1600h,AX=160Ah
----------2F4800-----------------------------
INT 2F - DOS v5.0 DOSKEY - INSTALLATION CHECK
AX = 4800h
Return: AL = nonzero if installed
SeeAlso: AX=4810h
----------2F4810-----------------------------
INT 2F - DOS v5.0 DOSKEY - READ INPUT LINE FROM CONSOLE
AX = 4810h
DS:DX -> line buffer (see INT 21/AH=0Ah)
Return: AX = 0000h if successful
Notes: the first byte (length) of the buffer MUST be 80h, or DOSKEY chains to
the previous handler
if the user's input is a macro name, no text is placed in the buffer
even though AX=0000h on return; the program must immediately issue
this call again to retrieve the expansion of the macro. Similarly,
if the user enters a special parameter such as $*, this call must
be repeated to retrieve the expansion; on the second call, DOSKEY
overwrites the macro name on the screen with its expansion.
SeeAlso: AX=4800h,INT 21/AH=0Ah
----------2F4A00CX0000-----------------------
INT 2F CU - DOS v5.0 - SINGLE-FLOPPY LOGICAL DRIVE CHANGE NOTIFICATION
AX = 4A00h
CX = 0000h
DH = new drive number
DL = current drive number
Return: CX = FFFFh to skip "Insert diskette for drive X:" message
Note: called by MSDOS 5.00 IO.SYS just before displaying the message
"Insert diskette for drive X:" on single-floppy systems
----------2F4A01-----------------------------
INT 2F - DOS 5.0 - QUERY FREE HMA SPACE
AX = 4A01h
Return: BX = number of bytes available in HMA (0000h if DOS not using HMA)
ES:DI -> start of available HMA area (FFFFh:FFFFh if not using HMA)
Note: called by Windows 3.1 DOSX.EXE
SeeAlso: AX=4310h,AX=4A02h
----------2F4A02-----------------------------
INT 2F - DOS 5.0 - ALLOCATE HMA SPACE
AX = 4A02h
BX = number of bytes
Return: ES:DI -> start of allocated HMA block or FFFFh:FFFFh
BX destroyed
Notes: this call is not valid unless DOS is loaded in the HMA (DOS=HIGH)
called by Windows 3.1 DOSX.EXE
SeeAlso: AX=4A01h
----------2F4A05-----------------------------
INT 2F U - DOS 5.0 DOSSHELL - TASK SWITCHING API???
AX = 4A05h
SI = function
0000h reset???
0001h ???
0002h ???
0003h ???
0004h ???
BL = ???
0005h ???
0006h get ???
Return: ES:DI -> ???
0007h get ???
Return: AX = ???
0008h get ???
Return: DX:AX -> ???
0009h get ???
Return: ES = ???
000Ah ???
BL = ???
ES:DI -> ???
000Bh get ???
Return: AX = ???
000Ch ???
BL = ???
Return: DX:AX -> ???
Notes: DOSSHELL chains to the previous handler if SI is not one of the values
listed above
the DOSSWAP.EXE module calls functions 03h,04h,05h,07h,08h,09h,0Ch
the Windows 3.1 DSWAP.EXE and WSWAP.EXE task switchers use these calls
SeeAlso: AX=4B01h
----------2F4A06-----------------------------
INT 2F CU - ??? - GET MEMORY SIZE
AX = 4A06h
DX = segment following last byte of conventional memory
Return: DX = segment following last byte of memory available for use by DOS
Note: called by MSDOS 5.00 IO.SYS startup code if the signature "RPL" is
present three bytes beyond the INT 2F handler; this call overrides
the value returned by INT 12
SeeAlso: INT 12
----------2F4A10-----------------------------
INT 2F - SMARTDRV v4.00+ - API
AX = 4A10h
BX = command
0000h installation check and hit ratios
Return: AX = BABEh if installed
DX:BX = cache hits
DI:SI = cache misses
CX = ???
BP = version (4.00 = 0400h)
0001h reset cache
0002h flush buffers
0003h status
BP = drive # (0=A, 1=B, etc.)
DL = subfunction
00h only get information
01h turn on read cache
02h turn off read cache
03h turn on write cache
04h turn off write cache
Return: AX = BABEh if OK
DL = status
bit 7 not cached
bit 6 write-through
bit 5 ???
bits 0-4 drive # (0=A, 1=B...)
DL = FFh if drive does not exist
Note: If the read cache is off, reads will not be cached,
but writes will continue to be cached if the write-
cache is enabled.
0004h cache size
Return: AX = ???
BX = largest number of elements
CX = size of elements in bytes
DX = number of elements under Windows
0005h double-buffer status
BP = drive # (0=A, 1=B...)
Return: AX = BABEh if double-buffered
0007h ???
Return: DI = random number???
000Ah get table pointer???
Return: ES:BX -> table of about 10 bytes or 5 words. Seems to
be words pointing to memory addresses
containing info??? (see below)
1234h signal serious error
pops up a message box saying that a serious error occurred and
to hit R to retry.
!!!
Note: at least partially supported by PC-Cache v8.0 (details not yet known)
SeeAlso: INT 21/AX=4402h"SMARTDRV",INT 21/AX=4403h"SMARTDRV"
Format of data table:
Offset Size Description
00h 8 BYTEs ???
08h WORD offset of WORD containing number of elements in cache
----------2F4B-------------------------------
INT 2F - LAN Manager 2.0 DOS Enh NETWKSTA.EXE - NETWORK WORKSTATION REDIRECTOR
AH = 4Bh
???
Return: ???
Note: LAN Manager enhanced mode adds features beyond the standard redirector
file/printer services
SeeAlso: AX=118Ah,AH=41h,AH=42h
----------2F4B01-----------------------------
INT 2F C - DOS v5.0 TASK SWITCHER - BUILD CALLOUT CHAIN
AX = 4B01h
CX:DX -> task switcher entry point (see AX=4B02h)
ES:BX = 0000h:0000h
Return: ES:BX -> callback info structure (see below) or 0000h:0000h
Notes: called by the task switcher
this function is hooked by clients which require notification of task
switcher activities; the call must first be passed on to the prior
handler with registers unchanged using a simulated interrupt. On
return, the client must build a callback info structure and store
the returned ES:BX in the "next" field, then return the address of
its own callback info structure.
a client program must add itself to the notification chain if it
provides services to other programs; before terminating, it must
remove itself from the chain by calling the task switcher's entry
point with AX=0005h (see AX=4B02h)
the task switcher entry point should not be saved, as it is subject to
change and will be provided on any notification call
the Windows 3.1 Standard Mode supports this API
SeeAlso: AX=160Bh,AX=4B02h
Format of callback info structure:
Offset Size Description
00h DWORD pointer to next callback info structure
04h DWORD pointer to notification function (see below)
08h DWORD reserved
0Ch DWORD address of zero-terminated list of API info structures
(see AX=4B02h)
Notification function is called with:
AX = function
0000h switcher initialization
Return: AX = 0000h if OK to load
= nonzero to abort task switcher
0001h query suspend
BX = session ID
Return: AX = 0000h if OK to switch session
= 0001h if not
0002h suspend session
BX = session ID
interrupts disabled
Return: AX = 0000h if OK to switch session
= 0001h if not
0003h activate session
BX = session ID
CX = session status flags
bit 0: set if first activation of session
bits 1-15: reserved (0)
interrupts disabled
Return: AX = 0000h
0004h session active
BX = session ID
CX = session status flags
bit 0: set if first activation of session
bits 1-15: reserved (0)
Return: AX = 0000h
0005h create session
BX = session ID
Return: AX = 0000h if OK to create session
= 0001h if not
0006h destroy session
BX = session ID
Return: AX = 0000h
0007h switcher termination
BX = flags
bit 0: set if calling switcher is only switcher loaded
bits 1-15: reserved (0)
Return: AX = 0000h
ES:DI -> task switcher entry point (see AX=4B02h)
Notes: function 0000h is generally called by the program which controls or
invokes the task switcher, rather than by the task switcher itself;
the entry point supplied to this function is not necessarily the
entry point to the task switcher itself, and may be 0000h:0000h. If
any client indicates that loading is not possible, all clients will
be called with function 0007h; thus it is possible for a client to
receive a termination notice without a corresponding initialization
notice.
except for functions 0002h and 0003h, the notification handler is
called with interrupts enabled and may make any INT 21h function
call; interrupts must not be enabled in functions 0002h and 0003h
function 0007h may be called with ES:DI = 0000h:0000h if the entry
point is no longer valid
----------2F4B02BX0000-----------------------
INT 2F - DOS v5.0 TASK SWITCHER - INSTALLATION CHECK
AX = 4B02h
BX = 0000h
ES:DI = 0000h:0000h
Return: ES:DI = 0000h:0000h if task switcher not loaded
ES:DI -> task switcher entry point (see below) if loaded
AX = 0000h
Notes: the returned entry point is that for the most-recently loaded task
switcher; the entry points for prior task switchers may be determined
with the "get version" call (see below)
this function is supported by PC Tools v8+ CPTASK
SeeAlso: AX=4A05h,AX=4B03h
Call task switcher entry point with:
AX = 0000h get version
Return: CF clear if successful
AX = 0000h
ES:BX -> task switcher version struct (see below)
CF set if unsupported function
AX = 0001h test memory region
ES:DI -> first byte to be tested
CX = size of region to test
Return: CF clear if successful
AX = memory type of tested region
0000h global
0001h global and local
0002h local (replaced on session switch)
CF set if unsupported function
AX = 0002h suspend switcher
ES:DI -> new task switcher's entry point
Return: CF clear if successful
AX = state
0000h switcher has been suspended
0001h switcher not suspended, new switcher must
abort
0002h switcher not suspended, but new switcher
may run anyway
CF set if unsupported function
AX = 0003h resume switcher
ES:DI -> new task switcher's entry point
Return: CF clear if successful
AX = 0000h
CF set if unsupported function
AX = 0004h hook notification chain
ES:DI -> callback info structure to be added to chain
(see AX=4B01h)
Return: CF clear if successful
AX = 0000h
CF set if unsupported function
AX = 0005h unhook notification chain
ES:DI -> callback info structure to be removed from chain
(see AX=4B01h)
Return: CF clear if successful
AX = 0000h
CF set if unsupported function
AX = 0006h query API support
BX = asynchronous API identifier
Return: CF clear if successful
AX = 0000h
ES:BX -> API info structure (see below) for the
client which provides the highest
level of
CF set if unsupported function
Format of task switcher version structure:
Offset Size Description
00h WORD major version of supported protocol (current protocol is 1.0)
02h WORD minor version of supported protocol
04h WORD major version of task switcher
06h WORD minor version of task switcher
08h WORD task switcher ID (see AX=4B03h)
0Ah WORD operation flags
bit 0: set if task switcher disabled
bits 1-15: reserved (0)
0Ch DWORD pointer to ASCIZ task switcher name
("MS-DOS Shell Task Switcher" for DOSSHELL task switcher)
10h DWORD pointer to previous task switcher's entry point or 0000h:0000h
Format of API info structure:
Offset Size Description
00h WORD size of structure in bytes (000Ah)
02h WORD API identifier
0001h NetBIOS
0002h 802.2
0003h TCP/IP
0004h LAN Manager named pipes
0005h Novell NetWare IPX
04h WORD major version \ of highest version of API for which the support
06h WORD minor version / level specified in the next field is provided
08h WORD support level
0001h minimal support
0002h API-level support
0003h switcher compatibility
0004h seamless compatibility
----------2F4B03-----------------------------
INT 2F - DOS v5.0 TASK SWITCHER - ALLOCATE SWITCHER ID
AX = 4B03h
ES:DI -> task switcher entry point (see AX=4B02h)
Return: AX = 0000h
BX = switcher ID (0001h-000Fh), or 0000h if no more available
Notes: if a task switcher has determined that it is the first to be loaded, it
must allocate an identifier for itself and provide this function to
all subsequent task switchers; if it is not the first to be loaded,
it must call this function to allocate an ID. The switcher ID is
used as the high four bits of all session identifiers to ensure
unique session IDs.
if no more switcher IDs are available, the new task switcher making the
call must terminate or disable itself
the task switcher providing the identifiers may call the new task
switcher's entry point as needed
this call is available from within DOSSHELL even if the task switcher
is not installed
this function is supported by PC Tools v8+ CPTASK, but appears to
always return an ID of 0000h
SeeAlso: AX=4B02h,AX=4B04h
----------2F4B04-----------------------------
INT 2F - DOS v5.0 TASK SWITCHER - FREE SWITCHER ID
AX = 4B04h
BX = switcher ID
ES:DI -> task switcher entry point (see AX=4B02h)
Return: AX = 0000h
BX = status
0000h successful
other error (invalid ID or ID not allocated)
Notes: called by a task switcher when it exits, unless it was the first loaded
and is providing the support for AX=4B03h and AX=4B04h
the task switcher providing the identifiers may call the terminating
task switcher's entry point as needed
this call is available from within DOSSHELL even if the task switcher
is not installed
this call is supported by PC Tools v8+ CPTASK, but appears to return
sucessfully no matter which ID is given
SeeAlso: AX=4B02h,AX=4B03h
----------2F4B05-----------------------------
INT 2F - DOS v5.0 DOSSHELL TASK SWITCHER - IDENTIFY INSTANCE DATA
AX = 4B05h
ES:BX = 0000h:0000h
CX:DX -> task switcher entry point (see AX=4B02h)
Return: ES:BX -> startup info structure (see below) or 0000h:0000h
Notes: called by task switcher
clients with instance data should hook this call, pass it through to
the previous handler with unchanged registers using a simulated
interrupt. On return, the client should create a startup info
structure (see below), store the returned ES:BX in the "next"
field, and return the address of the created structure in ES:BX
all MSDOS function calls are available from within this call
SeeAlso: AX=1605h,AX=160Bh,AX=4B02h
Format of startup info structure:
Offset Size Description
00h 2 BYTEs major, minor version of info structure (03h,00h)
02h DWORD pointer to next startup info structure or 0000h:0000h
06h DWORD 0000h:0000h (ignored)
0Ah DWORD ignored
0Eh DWORD pointer to instance data records
Format of one instance data record in array:
Offset Size Description
00h DWORD address of instance data (end of array if 0000h:0000h)
04h WORD size of instance data
----------2F4E53-----------------------------
INT 2F U - SilverNET - API
AX = 4E53h ("SN")
BH = major function class??? (04h and 02h are common)
BL = subclass???
CX = function number???
???
Return: AX = return value or status
???
Program: SilverNET is an SMB-compatible peer-to-peer NOS for DOS or
Windows systems, by Net-Source of Santa Clara, CA.
SeeAlso: AX=B800h,AX=B809h
----------2F53-------------------------------
INT 2F U - ???
AH = 53h
AL = subfunction (0Bh, maybe others???)
Return: ???
Note: called by MS Windows 3.1 POWER.DRV; hooked by MS Mouse driver v8.20+
and PC-Cache v8.0
SeeAlso: AH=54h,INT 33/AX=002Fh
----------2F54-------------------------------
INT 2F U - ???
AH = 54h
AL = subfunction (00h, 01h, maybe others???)
Return: ???
Note: called by MS Windows 3.1 POWER.DRV
SeeAlso: AH=53h
----------2F5453-----------------------------
INT 2F - TesSeRact RAM-RESIDENT PROGRAM INTERFACE
AX = 5453h
BX = subfunction
00h installation check
CX = 0000h
DS:SI -> 8-char blank-padded name
Return: AX = FFFFh installed
CX = ID number of already-installed copy
= anything else, not installed
CX = ID number for TSR when installed
01h get user parameters
CX = TSR ID number
Return: AX = 0000h successful
ES:BX -> user parameter block (see below)
= nonzero failed
02h check if hotkey in use
CL = scan code of hot key
Return: AX = FFFFh hot key conflicts with another TSR
otherwise safe to use the hotkey
03h replace default critical error handler
CX = TSR ID number
DS:SI -> new routine for INT 24h
Return: AX = nonzero, unable to install new handler
04h get internal data area
CX = TSR ID number
Return: AX = 0000h
ES:BX -> TSR's internal data area (see below)
= nonzero, TSR not found
05h set multiple hot keys
CX = TSR ID number
DL = number of additional hot keys to allocate
DS:SI -> table of hot keys
BYTE hotkey scan code
BYTE hotkey shift state
BYTE flag value to pass to TSR (nonzero)
Return: AX = nonzero, unable to install hot keys
06h - 0Fh reserved
10h enable TSR
CX = TSR ID number
Return: AX = nonzero, unable to enable
11h disable TSR
CX = TSR ID number
Return: AX = nonzero, unable to disable
12h unload TSR
CX = TSR ID number
Return: AX = nonzero, invalid TSR number
Note: if any interrupts used by TSR have been grabbed by
another TSR, the TesSeRact routines will wait until
it is safe to remove the indicated TSR from memory
13h restart TSR
CX = TSR ID number of TSR which was unloaded but is still in
memory
Return: AX = nonzero, unable to restart TSR
14h get status word
CX = TSR ID number
Return: AX = FFFFh invalid ID number
= other, successful
BX = bit flags
15h set status word
CX = TSR ID number
DX = new bit flags
Return: AX = nonzero, unable to set status word
16h get INDOS state at popup
CX = TSR ID number
Return: AX = 0000h successful
BX = value of INDOS flag
17h - 1Fh reserved
20h call user procedure
CX = TSR ID number
ES:DI -> user-defined data
Return: AX = 0000h successful
21h stuff keystrokes into keyboard buffer
CX = TSR ID number
DL = speed
00h stuff keystrokes only when buffer is empty
01h stuff up to four keystrokes per clock tick
02h stuff up to 15 keystrokes per clock tick
DH = scan code flag
if zero, buffer contains alternating ASCII and scan codes
if nonzero, buffer contains only ASCII codes
SI = number of keystrokes
ES:DI -> buffer to stuff
Return: AX = 0000h success
F0F0h user aborted with ^C or ^Break
other unable to stuff keystrokes
22h (v1.10) trigger popup
CX = TSR ID number
Return: AX = 0000h success, TSR will either pop up or beep to
indicate that it is unable to pop up
nonzero invalid ID number
23h (v1.10) invoke TSR's background function
CX = TSR ID number
Return: AX = 0000h success
FFFFh not safe to call background function
nonzero invalid ID number
24h - 2Fh reserved
Notes: Borland's THELP.COM popup help system for Turbo Pascal and Turbo C
(versions 1.x and 2.x only) fully supports the TesSeRact API, as
do the SWAP?? programs by Innovative Data Concepts.
AVATAR.SYS supports functions 00h and 01h (only the first three fields
of the user parameter block) using the name "AVATAR "
SeeAlso: AX=CAFEh
Format of User Parameter Block:
Offset Size Description
00h 8 BYTEs blank-padded TSR name
08h WORD TSR ID number
0Ah DWORD bitmap of supported functions
0Eh BYTE scan code of primary hotkey
00h = pop up when shift states match
FFh = no popup (if shift state also FFh)
0Fh BYTE shift state of primary hotkey
FFh = no popup (if scan code also FFh)
10h BYTE number of secondary hotkeys
11h DWORD pointer to extra hotkeys set by func 05h
15h WORD current TSR status flags
17h WORD PSP segment of TSR
19h DWORD DTA for TSR
1Dh WORD default DS for TSR
1Fh DWORD stack at popup
23h DWORD stack at background invocation
Format of TSR internal data area:
Offset Size Description
00h BYTE revision level of TesSeRact library
01h BYTE type of popup in effect
02h BYTE INT 08 occurred since last invocation
03h BYTE INT 13 occurred since last invocation
04h BYTE active interrupts
05h BYTE active soft interrupts
06h BYTE DOS major version
07h BYTE how long to wait before popping up
08h DWORD pointer to INDOS flag
0CH DWORD pointer to DOS critical error flag
10h WORD PSP segment of interrupted program
12h WORD PSP segment of prog interrupted by INT 28
14h DWORD DTA of interrupted program
18h DWORD DTA of program interrupted by INT 28
1Ch WORD SS of interrupted program
1Eh WORD SP of interrupted program
20h WORD SS of program interrupted by INT 28
22h WORD SP of program interrupted by INT 28
24h DWORD INT 24 of interrupted program
28h 3 WORDs DOS 3+ extended error info
2Eh BYTE old BREAK setting
2Fh BYTE old VERIFY setting
30h BYTE were running MS WORD 4.0 before popup
31h BYTE MS WORD 4.0 special popup flag
32h BYTE enhanced keyboard call in use
33h BYTE delay for MS WORD 4.0
11 times (for INTs 08h,09h,13h,16h,1Ch,21h,28h,2Fh,1Bh,23h, and 24h):
DWORD old interrupt vector
BYTE interrupt number
WORD offset in TesSeRact code segment of new interrupt handler
----------2F5500-----------------------------
INT 2F U - DOS v5.0 - COMMAND.COM INTERFACE
AX = 5500h
Return: AX = 0000h
DS:SI -> entry point table
Notes: used to access the shareable portion of COMMAND.COM, which may have
been moved into the HMA; only the primary COMMAND.COM retains this
portion
procedures called from a dispatcher in COMMAND's resident portion;
most assume that the segment address of the resident portion is on
the stack and are thus not of general use
----------2F6282-----------------------------
INT 2F U - PC Tools v7.0+ VDEFEND, VSAFE, VWATCH, DATAMON - SET ??? ADDRESS
AX = 6282h
CX:DX -> ??? or 0000h:0000h
DI = 0000h ???
FFFFh ???
other segment of ???
Return: BX = 0062h
Note: if CX:DX = 0000h:0000h on entry, the ??? address is not changed
(DATAMON only)
SeeAlso: INT 13/AH=FAh"VSAFE",INT 21/AH=FAh"VDEFEND"
----------2F6284BX0000-----------------------
INT 2F U - PC Tools v7.0+ DATAMON - INSTALLATION CHECK
AX = 6284h
BX = 0000h
CX = 0000h
Return: AX = segment of resident code
BX = 5555h
CX = 5555h
----------2F6284BX0001-----------------------
INT 2F U - PC Tools v7.0+ DATAMON - GET ???
AX = 6284h
BX = 0001h
CX = 0001h
Return: AX:BX -> ???
CX = BX
----------2F6284BX0002-----------------------
INT 2F U - PC Tools v7.0+ DATAMON - GET ???
AX = 6284h
BX = 0002h
CX = 0002h
Return: AX = ???
BX = ???
CX = AX
DX = BX
----------2F6284BX0003-----------------------
INT 2F U - PC Tools v7.0+ DATAMON - SET ??? FLAGS
AX = 6284h
BX = 0003h
CX = flags
bit 12: ???
10: ???
5: ???
3: ???
DX = flags
bit 15: ???
----------2F6284BX0004-----------------------
INT 2F U - PC Tools v8.0+ DATAMON - ???
AX = 6284h
BX = 0004h
CX = 0004h
Return: AX = 5555h
BX = ??? (0800h)
CX = ??? (FCCCh)
----------2F6400-----------------------------
INT 2F - SCRNSAV2.COM - INSTALLATION CHECK
AX = 6400h
Return: AL = 00h not installed
FFh installed
Note: SCRNSAV2.COM is a screen saver for PS/2's with VGA by Alan Ballard
SeeAlso: INT 10/AX=5555h
----------2F7000------------------------------
INT 2F - License Service API - INSTALLATION CHECK
AX = 7000h
CX = license server index (0000h to 001Fh)
Return: AL = status
00h not installed
FFh installed
Notes: The License Service API is being maintained by Microsoft but is being
supported by a large number of companies including Apple, Banyan,
DEC, HP, Lotus, Microsoft, Novell, Software Publishers Association,
and Wordperfect (not a complete list!)
Each license service provider must search for the next free index
slot to use
SeeAlso: AX=7001h,AX=7003h,AX=7004h,AX=7005h
----------2F7001------------------------------
INT 2F - License Service API - REQUEST License
AX = 7001h
CX = license server index (0000h to 001Fh)
DS:DX -> SLSREQEUST structure (see below)
Return: AX = status
0000h success
else provider error code
ES:BX = provider specific handle for the license context
SeeAlso: AX=7002h,AX=7004h,AX=7005h
Format of SLSREQUEST structure:
Offset Size Description
00h DWORD (return) status code
04h DWORD (return) handle identifying context
08h DWORD (call) address of Publisher string
0Ch DWORD (call) address of Product string
10h DWORD (call) address of Version string
14h DWORD units required
18h DWORD address of comment string
1Ch DWORD address of SLSCHALLENGE structure (see below)
Format of SLSCHALLENGE structure:
Offset Size Description
00h DWORD algorithm (currently always 1)
04h DWORD secret to be challenged (1-255)
08h DWORD size of challenge in bytes (1-255)
0Ch N BYTEs challenge data
----------2F7002------------------------------
INT 2F - License Service API - RELEASE License
AX = 7002h
CX = license server index (0000h to 001Fh)
DS:DX -> SLSRELEASE structure (see below)
ES:BX = provider specific handle for the license context
Return: AL = status
00h not installed
FFh installed
SeeAlso: AX=7001h,AX=7005h
Format of SLSRELEASE structure:
Offset Size Description
00h DWORD handle indentifying license context
04h DWORD total units consumed
08h DWORD address of comment string
----------2F7003------------------------------
INT 2F - License Service API - UPDATE
AX = 7003h
CX = license server index (0000h to 001Fh)
DS:DX -> SLSUPDATE structure
ES:BX = provider specific handle for the license context
Return: AL = status
00h not installed
FFh installed
SeeAlso: AX=7004h,AX=7005h
Format of SLSUPDATE structure:
Offset Size Description
00h DWORD (return) status code
04h DWORD (call) handle identifying license context
08h DWORD (call) total units consumed
0Ch DWORD additional units required
10h DWORD address of comment string
14h DWORD address of SLSCHALLENGE structure (see AX=7001h)
----------2F7004------------------------------
INT 2F - License Service API - GET ERROR
AX = 7004h
CX = license server index (0000h to 001Fh)
DS:DX -> SLSGETERROR structure (see below)
ES:BX = provider specific handle for the license context
Return: AL = status
00h not installed
FFh installed
SeeAlso: AX=7000h,AX=7001h
Format of SLSGETERROR structure:
Offset Size Description
00h DWORD (return) status code
04h DWORD handle identifying license context
08h DWORD error code
0Ch DWORD buffer size in bytes
10h N BYTEs data buffer
----------2F7005------------------------------
INT 2F - License Service API - QUERY License
AX = 7005h
CX = license server index (0000h to 001Fh)
DS:DX -> SLSQUERY structure (see below)
ES:BX = provider specific handle for the license context
Return: AL = status
00h not installed
FFh installed
SeeAlso: AX=7001h,AX=7002h
Format of SLSQUERY structure:
Offset Size Description
00h DWORD (return) status code
04h DWORD handle identifying license context
08h DWORD information index
0Ch DWORD buffer size in bytes
10h N BYTEs data buffer
----------2F7200-----------------------------
INT 2F - SRDISK v1.30 - INSTALLATION CHECK
AX = 7200h
Return: AL = FFh if installed
ES = segment of device driver header (see below)
Note: SRDISK is a freeware resizeable RAMdisk by Marko Kohtala
Format of device driver header:
Offset Size Description
00h 10 BYTEs same as standard device driver header (see INT 21/AH=52h)
0Ah BYTE number of subunits (drives) supported by driver
0Bh 3 BYTEs signature "SRD"
0Eh 4 BYTEs memory type string (currently only "XMS ")
12h 4 BYTEs ASCII driver version string "N.NN"
16h BYTE 00h
17h BYTE configuration format version (currently 00h)
18h WORD offset of drive configuration data
----------2F7A00-----------------------------
INT 2F - Novell NetWare - LOW-LEVEL API (IPX) INSTALLATION CHECK
AX = 7A00h
Return: AL = 00h not installed
= FFh installed
ES:DI -> FAR entry point for routines accessed exclusively
through INT 7A in NetWare versions through 2.0a. Call
with same values as INT 7A
SeeAlso: AX=7AFFh/BX=0000h,AX=D800h,INT 64"Novell",INT 7A"Novell"
----------2F7A10-----------------------------
INT 2F - Novell NetWare - TBMI v2.0 - GET TBMI STATUS
AX = 7A10h
Return: DH = major TBMI version number
DL = minor TBMI version number
CX = segment address of TBMI resident part
BX = status word of TBMI
bit 0: INT2F intercepted by TBMI
bit 1: INT7A intercepted by TBMI
bit 2: INT64 intercepted by TBMI
bits 3-14: reserved or unused ???
bit 15: outstanding task ID was detected
Note: TBMI is the Task-Switched Buffer Manager Interface
SeeAlso: AX=7A11h,AX=7A12h,AX=7A13h,AX=7A14h
----------2F7A11-----------------------------
INT 2F - Novell NetWare - TBMI v2.0 - GET INT2F HANDLERS
AX = 7A11h
Return: ES:BX -> old INT 2F handler
DS:DX -> TBMI INT 2F handler
SeeAlso: AX=7A10h,AX=7A12h,AX=7A13h
----------2F7A12-----------------------------
INT 2F - Novell NetWare - TBMI v2.0 - GET INT64 HANDLERS
AX = 7A12h
Return: ES:BX -> old INT 64 handler
DS:DX -> TBMI INT 64 handler
SeeAlso: AX=7A10h,AX=7A11h,AX=7A13h
----------2F7A13-----------------------------
INT 2F - Novell NetWare - TBMI v2.0 - GET INT7A HANDLERS
AX = 7A13h
Return: ES:BX = old INT 7A handler
DS:DX = TBMI INT 7A handler
SeeAlso: AX=7A10h,AX=7A11h,AX=7A12h
----------2F7A14-----------------------------
INT 2F - Novell NetWare - TBMI v2.0 - GET STATISTICS
AX = 7A14h
CX = statistic to retrieve
0000h available diagnostic functions???
Return: CX = maximum available function??? (000Ch for v2.0)
0001h buffers in use
Return: CX = TBMI buffers currently in use
0002h maximum buffers used
Return: CX = maximum number of buffers ever in use
0003h unavailable buffers
Return: CX = count of unavailable TBMI buffers
0004h old interrupt usage
Return: CX = TBMI accesses to intercepted old vectors INT 2F,
INT 64, and INT 7A
0005h far call usage
Return: CX = TBMI accesses to IPX/SPX far call handler (not
including internal accesses)
0006h task buffering
Return: CX = TBMI task buffering status (enabled/disabled or
disable/enable switch count???)
0007h current task ID
Return: CX = TBMI current task ID number (0000h if ???)
0008h outstanding ID count
Return: CX = number of outstanding TBMI IDs
0009h configured ECBs
Return: CX = number of TBMI Event Control Blocks configured
000Ah configured data ECBs
Return: CX = number of TBMI data ECBs configured
000Bh configured sockets
Return: CX = number of TBMI sockets configured (from NETCFG)
000Ch current sockets
Return: CX = number of TBMI sockets currently in use
SeeAlso: AX=7A10h
----------2F7A1B-----------------------------
INT 2F - Novell NetWare - TBMI v2.0 - RESERVED???
AX = 7A1Bh
Note: this call merely performs an IRET
----------2F7A20-----------------------------
INT 2F - Novell NetWare - NetWare 4.0 DOS Requester - GET CALL ADDRESS
AX = 7A20h
BX = 0000h
Return: AX = 0000h on success
ES:BX -> far call address for DOS Requester
Note: the DOS Requester replaces the NetWare Shell (ANETx, NETx) on
NetWare LAN's as of the release of NetWare 4.0. It is backward
compatible with NetWare 2.1x through 3.11 servers as well.
----------2F7A80-----------------------------
INT 2F C - Novell NetWare - SHELL 3.01d BROADCAST - ABNORMAL EXIT
AX = 7A80h
Return: nothing
Notes: called on abnormal exit of the NetWare shell to notify other Novell
TSRs that it is unsafe to call the shell in the future.
must be passed through so that all interested programs see the exit
on receiving this call, IPXODI clears an internal pointer to a
default value; Novell's NETBIOS.EXE clears its INT 21h pointer to
0000h:0000h and stops calling it
SeeAlso: AX=7A81h
----------2F7A81-----------------------------
INT 2F - Novell NetWare - SHELL 3.01d BROADCAST - SET SHELL INT 21 HANDLER
AX = 7A81h
CX:DX -> shell's INT 21h entry point
Return: nothing
Notes: the shell calls this function as it loads to allow interested TSRs
and drivers to make a local copy of the shell's entry point
must be passed through so that all interested programs see it
----------2F7A85-----------------------------
INT 2F - Novell NetWare - shell 3.01 - BROADCAST INFORM
AX = 7A85h
CX = broadcast server number
Return: CX = 0000h if broadcast message handled by another program
CX unchanged if broadcast not handled
----------2F7A90-----------------------------
INT 2F U - Novell NetWare - NETBIOS.EXE 3+ - INSTALLATION CHECK
AX = 7A90h
Return: AL = 00h if present
BX = ???
CX = PSP segment of NETBIOS resident code
SeeAlso: AX=7AFEh
----------2F7AFE-----------------------------
INT 2F - Novell NetWare - DOSNP.EXE - INSTALLATION CHECK
AX = 7AFEh
Return: AL = FFh if present
ES = (data???) segment of DOSNP
Program: DOSNP.EXE provides "named pipes" support for DOS workstations running
NetWare
Note: the NetWare shell calls this function and refuses to load if DOSNP is
present
SeeAlso: AX=7A90h
----------2F7AFFBX0000-----------------------
INT 2F - Novell NetWare - TBMI v2.0 - INSTALLATION CHECK???
AX = 7AFFh
BX = 0000h
CX = 4E65h ("Ne")
DX = 7457h ("tW")
ES:DI -> IPX/SPX special handler (XMS/EMS ???)
Return: AL = FFh if installed
CX = configured sockets (14h)
DS:SI -> data table ???
ES:DI -> IPX far call handler
Note: for IPX/SPX this call reportedly returns DS:DI pointing to the table
of pointers to service events queue head and tail
SeeAlso: AX=7AFFh/BX=0001h
----------2F7AFFBX0001-----------------------
INT 2F - Novell NetWare - TBMI v2.0, shell v3.01d - INSTALLATION CHECK???
AX = 7AFFh
BX = 0001h
CX = 4E65h ("Ne")
DX = 7457h ("tW")
Return: AL = FFh if installed
CX = ??? (8000h)
SI = ??? (or -> ???) (0002h)
ES:DI -> IPX far call handler
ES:DX -> 6-byte data area ???
SeeAlso: AX=7AFFh/BX=0000h
----------2F7F24-----------------------------
INT 2F - Multiplex - ???
AX = 7F24h
???
Return: ???
Note: called by PC/370, an IBM 370 emulator by Donald S. Higgins
----------2F7F26-----------------------------
INT 2F - Multiplex - ???
AX = 7F26h
???
Return: ???
Note: called by PC/370, an IBM 370 emulator by Donald S. Higgins
----------2F8000-----------------------------
INT 2F - EASY-NET - INSTALLATION CHECK
AX = 8000h
Return: AL = 00h not installed
FFh installed
Note: EASY-NET is a shareware two-machine serial-port network
----------2F8000-----------------------------
INT 2F - Nanosoft, Inc. TurboNET server - INSTALLATION CHECK
AX = 8000h
Return: AL = FFh if installed
BX = CS of resident code
CX = ??? (03FCh)
Note: TurboNET is a NetBIOS-based file redirector and server; a demonstration
version may be downloaded from Nanosoft's BBS
SeeAlso: AX=8100h
----------2F8000DX0000-----------------------
INT 2F - FaxBIOS interface - INSTALLATION CHECK
AX = 8000h
DX = 0000h
DI = 0000h
Return: AL = FFh if installed
DX:DI -> signature "FaxBiosjpc"
Note: FaxBIOS may use any multiplex number from 80h through FFh; to determine
whether it is installed, it is necessary to poll all multiplex
numbers for one which returns the above signature
SeeAlso: AH=2Ah,AX=80FBh
----------2F8001-----------------------------
INT 2F - Nanosoft, Inc. TurboNET server - ???
AX = 8001h
DS:SI -> 16-byte buffer for ???
Return: AH = status
00h successful
01h error
Note: makes NetBIOS calls
----------2F80FB-----------------------------
INT 2F - FaxBIOS interface - COMMAND SUBMISSION
AX = 80FBh
BX = function number (see below)
DX:DI -> command buffer (see below)
Return: AL = FFh if submitted OK
CX = result code (see below)
Note: FaxBIOS may use any multiplex number from 80h through FFh
SeeAlso: AX=8000h"FaxBIOS",AX=CBDDh
Values for function number:
0001h SYS_LOGIN
0002h SYS_LOGOUT
0003h SYS_GET_FAXAPP_INFO
0004h STAT_IO_GET
0005h STAT_FAXBIOS_GET
0006h PDIR_OPEN
0007h PDIR_CLOSE
0008h PDIR_READ_PERSON
0009h PDIR_PARTIAL_READ
000Ah PDIR_READ_GROUP
000Bh PDIR_READ_MEMBER_LIST
000Ch PDIR_WRITE_PERSON
000Dh PDIR_WRITE_GROUP
000Eh PDIR_DELETE_PERSON
000Fh PDIR_DELETE_GROUP
0010h PDIR_READ_GROUP_LIST
0011h PDIR_IN_GROUP
0012h PDIR_OUT_GROUP
0013h SCHED_OPEN
0014h SCHED_ADD_DEST
0015h SCHED_ADD_FILE
0016h SCHED_SET_PARAMS
0017h SCHED_CANCEL
0018h SCHED_CLOSE
0019h SLOG_OPEN
001Ah SLOG_CLOSE
001Bh SLOG_SHORT_ENV_STAT
001Ch SLOG_LONG_ENV_STAT
001Dh SLOG_DEST_STAT
001Eh SLOG_FILE_STAT
001Fh SLOG_CANCEL_ENV
0020h RLOG_OPEN
0021h RLOG_CLOSE
0022h RLOG_READ
0023h GRAPH_GET_FILE_TYPE
0024h GRAPH_EXPORT_FILE
0025h GRAPH_GET_LAYOUT_INFO
0026h GRAPH_CREATE_FILE
0027h GRAPH_CLOSE_FILE
0028h GRAPH_CREATE_PAGE
0029h GRAPH_WRITE
002Ah GRAPH_END_PAGE
002Bh GRAPH_OPEN_FILE
002Ch GRAPH_GOTO_PAGE
002Dh GRAPH_READ
002Eh IOCTL_GET
002Fh IOCTL_SET
0030h IOCTL_ANSWER_FAX
0031h IOCTL_DIAL
Values for result code:
0000h successful
0001h not prepared or servicing another client (busy)
0002h call failed due to sharing (LOCKED)
0003h logged-in client limit reached (FULL)
0004h transport denied (TRANSPORT_DENIED)
0005h not implemented (NOT_IMPLEMENTED)
0006h aborted while in progress (ABORTED)
0007h permissions denied (PERMISSION_DENIED)
0008h requested data is no longer valid (NO_LONGER_VALID)
0080h unspecified system error occurred
0081h an internal file was not found
0082h an internal file could not be created
0083h an internal file could not be opened
0084h an internal file could not be closed
0085h error occurred writing to an internal file
0086h error occurred reading from an internal file
0087h bad or corrupted file encountered
0088h an access violation occurred
0089h an internal file is empty
008Ah insufficient memory to process request
008Bh FaxBIOS was unable to issue a handle
008Ch an error internal to FaxBIOS occurred
008Dh no room on disk
0100h unspecified error accessing client file
0101h file not found
0102h creation fault
0103h open fault
0104h close fault
0105h write fault
0106h read fault
0107h file corrupted
0108h access violation
0109h empty file
0200h unspecified argument error
0201h bad function
0202h bad option
0203h bad structure size
0204h bad buffer size
0205h bad client ID
0300h unspecified error with token
0301h cover sheet token was invalid
0302h logo token was invalid
0303h signature token was invalid
0304h font token was invalid
0305h phone directory token was invalid
0306h outbound route token was invalid
0307h priority token was invalid
0308h sort token was invalid
0309h billing token was invalid
0400h unspecified handle error
0401h bad Phone Directory handle
0402h bad scheduling handle
0403h bad read send log handle
0404h bad read receive log handle
0405h bad graphics handle
0500h data passed in structure was invalid
0501h name field given is invalid
0502h phone number given is invalid
0503h poll code submitted is invalid
0504h file type constant was invalid
0505h BFT constant not defined or supported
0506h resolution not defined or supported
0507h page length not defined or supported
0508h page width not defined or supported
0509h date & time requested are ridiculous
050Ah Subject text was not an ASCIIZ string
050Bh From text was not an ASCIIZ string
050Ch requested envelope ID was not found
050Dh requested envelope ID is not valid
050Eh envelope requested was not found
050Fh destination index is out of range
0510h file index is out of range
0511h index into receive log is out of range
0512h file name specified was incomplete or invalid
0513h page selected was out of range
0514h bit width more than byte width
0515h mode for open is not defined
0516h person index is out of range
0517h person ID is out of range
0518h group index out of range or invalid
0519h group ID out of range or invalid
051Ah range of indices to read is invalid
051Bh group name given is invalid
051Ch field_to_use is badly specified
051Dh predicate invalid for field specified
0600h unspecified client procedure error
0601h device of interest is not present
0602h device of interest has been removed
0603h device of interest is not responding
0604h device of interest is disabled
0605h could not dial because device was in use
0606h maximum destination limit exceeded
0607h maximum file limit exceeded
0608h scheduling closed with no destination
0609h scheduling closed with no files or poll
060Ah scheduling closed with no parameters specified
060Bh file type specified does not match file
060Ch file type specified is not supported
060Dh file submitted is not exportable
060Eh file type specified is not imageable
060Fh error converting file
0610h envelope could not be cancelled
0611h Phone Directory is full
0612h record is already in the Phone Directory
0613h selected group in Phone Directory is full
0614h person is already in the group
0615h person is not in the group & cannot be removed
0616h a graphics file to be created already exists
0617h a grphics file to be read is empty
0618h GRAPH_CREATE_PAGE called before GRAPH_END_PAGE
0619h graph read or write attempted without goto or create
061Ah graph page contains no data
061Bh Phone Directory is already open for this client
061Ch schedule log is already open for this client
061Dh receive log is aready open for this client
061Eh Phone Directory function requires write mode
0800h denied exclusive use of the API
Format of SYS_LOGIN command buffer:
Offset Size Description
00h WORD structure size
02h WORD function number
04h WORD return code
06h WORD client ID
08h WORD API Major Version
0Ah WORD API Minor Version
0Ch DWORD reserved for manufacturer's use
10h 22 BYTEs manufacturer's ID
26h WORD highest possible device number
28h WORD maximum destinations per envelope
2Ah WORD maximum files per envelope
2Ch WORD FaxBIOS capabilities bitmap
bit 0: transmit supported
bit 1: receive supported
bit 2: IOCTL supported
bit 3: IOCTL_DIAL supported
bit 4: IOCTL_ANSWER_FAX supported
bit 5: manual transmit supported
bit 6: optional phone services supported
bit 7: canonical phone objects
bit 8: seam with next supported
2Eh DWORD T.30 capabilities bitmap
bit 0: low vertical resolution (minimum)
bit 1: high vertical resolution
bit 2: page width 107mm (4.21 in)
bit 3: page width 151mm (5.91 in)
bit 4: page width 215mm (8.46 in) (minimum)
bit 5: page width 255mm (10.04 in)
bit 6: page width 303mm (11.93 in)
bit 7: unused
bit 8: page length 297mm (11.69 in) (minimum)
bit 9: page length 364mm (14.33 in)
bit 10: page length 279mm (11 in)
bit 11: page length unlimited
bit 12: Group 4 resolution 300x300
bit 13: Group 4 resolution 400x400
bit 14: able to respond to poll from remote
bit 15: able to poll remote
bit 16: binary file transfer supported
32h WORD IPC handle
34h DWORD amount of memory needed to load
38h WORD scope (00h for public, nonzero for private)
3Ah 6 BYTEs future expansion
40h WORD structure size
Format of SYS_LOGOUT command buffer:
Offset Size Description
00h WORD structure size
02h WORD function number
04h WORD return code
06h WORD client ID
08h DWORD client tag (for client's internal use)
0Ch 6 BYTEs future expansion
12h WORD structure size
Format of SYS_GET_FAXAPP_INFO command buffer:
Offset Size Description
00h 12 BYTEs common data (see SYS_LOGOUT above)
0Ch 80 BYTEs FaxBIOS data
5Ch 80 BYTEs default cover
ACh 80 BYTEs default logo
FCh 80 BYTEs default signature
14Ch 80 BYTEs default font 10
19Ch 80 BYTEs default font 165
1ECh 80 BYTEs default user font
23Ch 80 BYTEs default Pdir
28Ch 80 BYTEs default sort
2DCh 10 BYTEs default bill
2E6h 10 BYTEs default route
2F0h 40 BYTEs default cover sheet form
318h 34 BYTEs valid dial characters
33Ah 6 BYTEs local country code
340h 6 BYTEs local city or area code
346h 6 BYTEs future expansion
34Ch WORD structure size
Format of STAT_IO_GET command buffer:
Offset Size Description
00h 12 BYTEs common data (see SYS_LOGOUT above)
0Ch WORD device number
0Eh WORD current activity
10h WORD number of rings (if ringing)
12h WORD number of fascimiles transmitted
14h WORD number of fascimiles received
16h WORD status of last transmission
18h WORD envelope number of last transmission
1Ah WORD index of last destination in envelope
1Ch WORD status of last reception
1Eh WORD current page (if session in progress)
20h 80 BYTEs current file
70h104 BYTEs remote number
D8h 20 BYTEs last name
ECh 20 BYTEs first name
100h 32 BYTEs company name
120h 32 BYTEs notes
140h WORD current envelope ID (if sending)
142h WORD total pages in transmission (if sending)
144h 6 BYTEs future expansion
14h WORD structure size
Format of STAT_FAXBIOS_GET command buffer:
Offset Size Description
00h 12 BYTEs common data (see SYS_LOGOUT above)
0Ch WORD status ID
0Eh WORD currenty FaxBIOS function number
10h WORD current Client ID being serviced
12h WORD number of things to do
14h WORD number of them done
16h WORD number of pages to do (if any)
18h WORD number of them done
1Ah WORD number of files to do
1Ch WORD number of them done
1Eh 80 BYTEs current File
6Eh WORD 0 if all devices are idle
70h WORD number of fascimiles transmitted
72h WORD number of fascimiles received
74h WORD status of last transmission in system
76h WORD envelope ID of last transmission
78h WORD index of last destination in envelope
7Ah WORD status of last reception in system
7Ch DWORD time of next transmission
80h 6 BYTEs future expansion
86h WORD structure size
Format of PDIR_OPEN command buffer:
Offset Size Description
00h 12 BYTEs common data (see SYS_LOGOUT above)
0Ch 80 BYTEs Phone Directory token
5Ch 80 BYTEs sort order token
ACh WORD open Mode (0 = read, 1 = write)
AEh WORD Phone Directory handle
B0h WORD number of people
B2h WORD number of groups
B4h WORD bitmap of fields supported by partial read
B6h 6 BYTEs future expansion
BCh WORD structure size
Format of PDIR_CLOSE command buffer:
Offset Size Description
00h 12 BYTEs common data (see SYS_LOGOUT above)
0Ch WORD Phone Directory handle
0Eh 6 BYTEs future expansion
14h WORD structure size
Format of PDIR_READ_PERSON command buffer:
Offset Size Description
00h 12 BYTEs common data (see SYS_LOGOUT above)
0Ch WORD Phone Directory handle
0Eh WORD retrieve by index
10h WORD person ID or index
12h WORD how many groups person is in
14h WORD person ID
16h 20 BYTEs last name
2Ah 20 BYTEs first name
3Eh 32 BYTEs company
5Eh 32 BYTEs notes
7Eh 6 BYTEs FAX country code
84h 6 BYTEs FAX city/area code
8Ah 14 BYTEs FAX local number
98h 14 BYTEs FAX extension
A6h 24 BYTEs reserved
BEh 6 BYTEs voice country code
C4h 6 BYTEs voice city/area code
CAh 14 BYTEs voice local number
D8h 14 BYTEs voice extension
E6h 24 BYTEs reserved
FEh 10 BYTEs outbound routing information
108h 10 BYTEs billing information, credit card etc
112h DWORD remote FAX capabilities
116h 21 BYTEs T.30 poll code of FAX number
12Bh 15 BYTEs reserved
13Ah 6 BYTEs future expansion
140h WORD structure size
Format of SCHED_OPEN, SCHED_CANCEL command buffer:
Offset Size Description
00h 12 BYTEs common data (see SYS_LOGOUT above)
0Ch WORD scheduler handle
0Eh 6 BYTEs future expansion
14h WORD structure size
Format of SCHED_ADD_DEST command buffer:
Offset Size Description
00h 12 BYTEs common data (see SYS_LOGOUT above)
0Ch WORD schedule handle
0Eh WORD device number if manual send wanted
10h WORD non-zero if poll desired
12h WORD person ID
14h 20 BYTEs last name
28h 20 BYTEs first name
3Ch 32 BYTEs company
5Ch 32 BYTEs notes
7Ch 6 BYTEs FAX country code
82h 6 BYTEs FAX city/area code
88h 14 BYTEs FAX local number
96h 14 BYTEs FAX extension
A4h 24 BYTEs reserved
BCh 6 BYTEs voice country code
C2h 6 BYTEs voice city/area code
C8h 14 BYTEs voice local number
D6h 14 BYTEs voice extension
E4h 24 BYTEs reserved
FCh 10 BYTEs outbound routing information
106h 10 BYTEs billing information, credit card etc
110h DWORD remote FAX capabilities
114h 21 BYTEs T.30 poll code of FAX number
129h 15 BYTEs reserved
138h 6 BYTEs future expansion
13Eh WORD structure size
Format of SCHED_ADD_FILE command buffer:
Offset Size Description
00h 12 BYTEs common data (see SYS_LOGOUT above)
0Ch WORD schedule handle
0Eh WORD file type
0000h unidentified
0001h native file format
0002h ASCII
0003h FaxBIOS Tiff Class F
10h 80 BYTEs file name
60h 80 BYTEs font token
B0h WORD conversion options bitmap
B2h WORD resolution
0000h standard 98 lines per inch, 204 dpi
0001h fine 196 lines per inch, 204 dpi
0002h Group4 300 dpi
0003h Group4 400 dpi
B4h WORD page length
0000h 279 mm (11 in)
0001h 297 mm (11.69 in)
0002h 364 mm (14.33 in)
0003h unlimited
B6h WORD page width
0000h 215 mm (8.46 in)
0001h 255 mm (10.04 in)
0002h 303 mm (11.93 in)
0003h 151 mm (5.91 in)
0004h 107 mm (4.21 in)
B8h WORD binary file transfer specification
0000h only as FAX
0001h only as file (for non-faxable files)
0002h as file when possible else FAX
BAh WORD seam flag (nonzero for seam with next)
BCh WORD delete flag (nonzero to delete when done)
BEh 6 BYTEs future expansion
C4h WORD structure size
Format of SCHED_SET_PARAMS command buffer:
Offset Size Description
00h 12 BYTEs common data (see SYS_LOGOUT above)
0Ch WORD scheduler handle
0Eh DWORD time to send
10h 10 BYTEs priority token
1Ch 80 BYTEs logo file token
6Ch 80 BYTEs signature file token
BCh 80 BYTEs cover page token
10Ch 40 BYTEs Subject text
134h 40 BYTEs From text
15Ch WORD user ID
15Eh 6 BYTEs future expansion
164h WORD structure size
Format of SCHED_CLOSE command buffer:
Offset Size Description
00h 12 BYTEs common data (see SYS_LOGOUT above)
0Ch WORD scheduler handle
0Eh WORD envelope ID generated
10h 6 BYTEs future expansion
16h WORD structure size
Format of SLOG_OPEN, SLOG_CLOSE, RLOG_OPEN, RLOG_CLOSE command buffer:
Offset Size Description
00h 12 BYTEs common data (see SYS_LOGOUT above)
0Ch WORD log handle
0Eh WORD number of entries
10h 6 BYTEs future expansion
16h WORD structure size
Format of GRAPH_GET_FILE_TYPE command buffer:
Offset Size Description
00h 12 BYTEs common data (see SYS_LOGOUT above)
0Ch 80 BYTEs filename
5Ch WORD file type
0000h unidentified
0001h native file format
0002h ASCII
0003h FaxBIOS Tiff Class F
5Eh WORD bitmap of supported capabilities
60h 6 BYTEs future expansion
66h WORD structure size
Format of GRAPH_CREATE_FILE command buffer:
Offset Size Description
00h 12 BYTEs common data (see SYS_LOGOUT above)
0Ch 80 BYTEs filename
5Ch WORD graph handle
5Eh 6 BYTEs future expansion
64h WORD structure size
Format of GRAPH_CLOSE_FILE, GRAPH_END_PAGE command buffer:
Offset Size Description
00h 12 BYTEs common data (see SYS_LOGOUT above)
0Ch WORD graph handle
0Eh 6 BYTEs future expansion
14h WORD structure size
Format of GRAPH_CREATE_PAGE command buffer:
Offset Size Description
00h 12 BYTEs common data (see SYS_LOGOUT above)
0Ch WORD graph handle
0Eh WORD resolution
10h WORD page width
12h 6 BYTEs future expansion
18h WORD structure size
Format of GRAPH_WRITE_PAGE command buffer:
Offset Size Description
00h 12 BYTEs common data (see SYS_LOGOUT above)
0Ch WORD graph handle
0Eh DWORD pointer to storage for image
12h WORD band height in lines
14h WORD width of page image in bytes
16h WORD facsimile page width constant
18h WORD width of page image in bits
1Ah WORD number of bytes actually processed
1Ch 6 BYTEs future expansion
22h WORD structure size
Format of GRAPH_OPEN_FILE command buffer:
Offset Size Description
00h 12 BYTEs common data (see SYS_LOGOUT above)
0Ch 80 BYTEs filename
5Ch WORD file type
5Eh WORD graph handle
60h WORD number of pages
62h 6 BYTEs future expansion
68h WORD structure size
Format of GRAPH_GOTO_PAGE command buffer:
Offset Size Description
00h 12 BYTEs common data (see SYS_LOGOUT above)
0Ch WORD graph handle
0Eh WORD page number
10h WORD vertical resolution
12h WORD page width
14h DWORD page length
18h 6 BYTEs future expansion
1Eh WORD structure size
Format of GRAPH_READ_PAGE command buffer:
Offset Size Description
00h 12 BYTEs common data (see SYS_LOGOUT above)
0Ch WORD graph handle
0Eh DWORD pointer to storage for image
12h WORD band height in lines
14h WORD width of page image in bytes
16h WORD facsimile page width constant
18h WORD width of page image in bits
1Ah WORD number of bytes actually processed
1Ch 6 BYTEs future expansion
22h WORD structure size
Format of IOCTL_ANSWER_FAX command buffer:
Offset Size Description
00h 12 BYTEs common data (see SYS_LOGOUT above)
0Ch WORD device number
0Eh 6 BYTEs future expansion
14h WORD structure size
Format of IOCTL_DIAL command buffer:
Offset Size Description
00h 12 BYTEs common data (see SYS_LOGOUT above)
0Ch WORD device number
0Eh 6 BYTEs country code
14h 6 BYTEs city or area code
1Ah 14 BYTEs local number
28h 14 BYTEs extension
36h 14 BYTEs reserved
4Eh 6 BYTEs future expansion
54h WORD structure size
----------2F8100-----------------------------
INT 2F U - Nanosoft, Inc. TurboNET redirector - INSTALLATION CHECK
AX = 8100h
Return: AL = FFh if installed
Note: TurboNET is a NetBIOS-based file redirector and server; a demonstration
version may be downloaded from Nanosoft's BBS
SeeAlso: AX=8000h"TurboNET"
----------2F8101-----------------------------
INT 2F U - Nanosoft, Inc. TurboNET redirector - ???
AX = 8101h
Return: AL = ???
DL = ???
----------2F8102-----------------------------
INT 2F U - Nanosoft, Inc. TurboNET redirector - ???
AX = 8102h
Return: AL = ???
DL = ???
----------2F8103-----------------------------
INT 2F U - Nanosoft, Inc. TurboNET redirector - GET MACHINE NAME???
AX = 8103h
ES:DI -> 17-byte buffer
Return: buffer filled
----------2F8104-----------------------------
INT 2F U - Nanosoft, Inc. TurboNET redirector - ???
AX = 8104h
BL = ???
BH = ???
CX = ???
DX = ???
DS:SI -> 16-byte buffer containing ???
Return: AL = 00h ???
----------2F8105-----------------------------
INT 2F U - Nanosoft, Inc. TurboNET redirector - ???
AX = 8105h
CX = ??? (don't change current value if 0000h)
DX = ??? (don't change current value if 0000h)
Return: AL = 00h successful
----------2F82-------------------------------
INT 2F U - Nanosoft, Inc. TurboNET - ???
AH = 82h
???
Return: ???
Note: called by TNR.EXE, the TurboNET redirector configuration program
SeeAlso: AX=8100h
----------2F8200-----------------------------
INT 2F - RESPLAY - SAMPLE/PLAYBACK
AX = 8200h
DX:DI -> start of sample space
CX:BX = length in bytes
Return: AX = status
1000h successful
2000h not initialized (see AX=8210h)
other RESPLAY not installed
Note: RESPLAY is a freeware sound sampling/playback utility by Mark J. Cox
SeeAlso: AX=8201h,AX=8210h
----------2F8201-----------------------------
INT 2F - RESPLAY - INSTALLATION CHECK
AX = 8201h
Return: AX = 7746h if installed
SeeAlso: AX=8202h
----------2F8202-----------------------------
INT 2F - RESPLAY - UNINSTALL
AX = 8202h
Return: AX = status
1000h successful
SeeAlso: AX=8201h
----------2F8210-----------------------------
INT 2F - RESPLAY - INITIALIZE
AX = 8210h
BL = sound device
00h printer port LPT1
01h printer port LPT2
02h prototype board at I/O address 0300h
03h printer port (alternative LPT1)
04h internal speaker
BH = sample rate in multiples of 250 Hz (14h to A0h)
CL = direction
00h playback
01h sample
Return: AX = status
1000h successful
2000h parameter out of range
other RESPLAY not installed
SeeAlso: AX=8200h
----------2F86-------------------------------
INT 2F U - ???
AH = 86h
AL = function (at least 06h and 07h)
???
Return: ???
Note: called by Codeview for Windows
SeeAlso: AH=44h
----------2F8900-----------------------------
INT 2F - WHOA!.COM - INSTALLATION CHECK
AX = 8900h
Return: AL = 00h not installed
= FFh installed
Note: WHOA!.COM is a system slow-down utility by Brad D Crandall
SeeAlso: AX=8901h,AX=8902h
----------2F8901-----------------------------
INT 2F - WHOA!.COM - UNINSTALL
AX = 8901h
Return: AL = FDh successful
= FEh error
Note: WHOA!.COM is a system slow-down utility by Brad D Crandall
SeeAlso: AX=8900h
----------2F8902-----------------------------
INT 2F - WHOA!.COM - SET DELAY COUNT
AX = 8902h
BX = delay count (larger values slow system down more)
Return: AL = FDh successful
= FEh error
Note: WHOA!.COM is a system slow-down utility by Brad D Crandall
SeeAlso: AX=8900h
----------2F9000-----------------------------
INT 2F U - RAID - INSTALLATION CHECK
AX = 9000h
Return: AL = FFh if installed
Note: RAID (Resident AID) is a TSR utility program by Ross Neilson Wentworth
that resides mostly in EMS
----------2F9001-----------------------------
INT 2F U - RAID - GET ???
AX = 9001h
Return: DX:AX -> ???
SeeAlso: AX=9000h
----------2F9002-----------------------------
INT 2F U - RAID - GET RESIDENT SEGMENT
AX = 9002h
Return: AX = segment of resident (conventional memory) portion
SeeAlso: AX=9000h
----------2F9003-----------------------------
INT 2F U - RAID - UNINSTALL
AX = 9003h
Return: ???
SeeAlso: AX=9000h
----------2F9004-----------------------------
INT 2F U - RAID - GET ???
AX = 9004h
Return: AX = first available paragraph past end of resident portion???
CX destroyed
SeeAlso: AX=9000h
----------2F92-------------------------------
INT 2F - Couriers LAN E-Mail - API
AH = 92h
AL = function
00h installation check
01h uninstall
02h pop down MICRO.EXE notification window
03h ???
04h ???
05h ???
Return: ???
SeeAlso: AH=9Ch
----------2F92-------------------------------
INT 2F U - PC Tools v8.0 DRIVEMAP - ???
AH = 92h
AL = function (00h-1Eh)
???
Return: ???
AX = FFFFh if not a valid function number in AL
SeeAlso: INT 16/AX=FF70h
----------2F93-------------------------------
INT 2F - InnerMission v1.7+ - INSTALLATION CHECK
AH = 93h
BX = CX = AX
Return: AL = FFh if installed and BX=CX=AX on entry
BX = segment of resident code
= 01h if installed but BX or CX differ from AX
Note: InnerMission is a shareware graphical screen blanker by Kevin Stokes
----------2F9C-------------------------------
INT 2F - Couriers LAN E-Mail OPERATOR.EXE - API
AH = 9Ch
AL = subfunction
01h uninstall
Return: ???
SeeAlso: AH=92h
----------2FA1--BX0081-----------------------
INT 2F - Ergo DOS extenders - INSTALLATION CHECK
AH = A1h
BX = 0081h
AL = which
FEh OS/286,OS/386
FFh HummingBoard DOS extender
ES:DI -> 16-byte buffer
Return: if installed, first four bytes of ES:DI buffer are "IABH"
Note: since TKERNEL is a licensed version, it is likely that subfunctions
BX=0082h and BX=0084h are present and function identically to the
AX=FBA1h/BX=008xh calls
SeeAlso: AX=ED00h,AX=FBA1h,INT 15/AX=BF02h
----------2FA189-----------------------------
INT 2F U - Biologic HRAMDEV.SYS - API
AX = A189h
BX = subfunction
0000h set ???
0001h remove ???
0002h get status ???
0003h enable ???
0004h disable ???
0005h set ??? flag
0006h clear ??? flag
0007h set ??? flag
0008h clear ??? flag
0009h set ???
ES:DI -> function-specific arguments
if func 0000h: 20-byte buffer containing ???
if func 0001h: 20-byte buffer for returned ???
if func 0002h: 16-byte buffer for returned ???
if func 0009h: WORD containing ???
Return: BX = A189h if installed
AH = status
00h successful
FFh failed or invalid function number
Notes: HRAMDEV.SYS is a part of the shareware package HRAM by Biologic which
provides improved high memory access under MSDOS 5.0
functions 00h and 01h use a stack of four entries; function 01h always
removes the values stored with the most recent function 00h call
which has not yet been matched with a function 01h call.
----------2FA4E0-----------------------------
INT 2F - Futurus Team - INSTALLATION CHECK
AX = A4E0h
Return: AL = 52h ("R") if installed
AH = major version plus 30h ("0")
ES:BX -> ??? (INT A4 handler???)
Note: older versions of Right Hand Man (from which Team evolved) store the
signature "RH" at offset 103h in the INT 2F handler's segment
SeeAlso: INT A4"Right Hand Man"
----------2FA900-----------------------------
INT 2F - METZTSR.COM - INSTALLATION CHECK
AX = A900h
CF set
Return: CF clear if resident
AX = 97FFh
CF set if not present
Notes: METZTSR.COM prevents METZ applications (such as the MAGIC screen
saver) inactivity timeout while running a DOSapp under MS Windows.
the default multiplex number is A9h, but may be set to any value from
80h to FFh with a commandline switch
SeeAlso: AX=A901h,AX=A902h
----------2FA901-----------------------------
INT 2F - METZTSR.COM - GET TIME OF LAST KEYBOARD ACTIVITY
AX = A901h
CF set
Return: CF clear if successful
AX:DX = BIOS time at which INT 09 was last invoked
CF set if not present
SeeAlso: INT 09,INT 1A/AH=00h
----------2FA902-----------------------------
INT 2F - METZTSR.COM - SET METZ Ctrl-Alt-Del FLAG
AX = A902h
BL = new value
00h Ctrl-Alt-Del not allowed
else Ctrl-Alt-Del allowed (startup default is 01h)
CF set
Return: CF clear if successful
AX = 97FFh
CF set if not resident
SeeAlso: AX=A903h
----------2FA903-----------------------------
INT 2F - METZTSR.COM - GET METZ Ctrl-Alt-Del FLAG
AX = A903h
CF set
Return: CF clear if successful
AX = 97FFh if Ctrl-Alt-Del allowed
AX = 0000h if Ctrl-Alt-Del not allowed
CF set if not resident
SeeAlso: AX=A902h
----------2FAA00-----------------------------
INT 2F - VIDCLOCK.COM - INSTALLATION CHECK
AX = AA00h
Return: AL = 00h not installed
FFh installed
Note: VIDCLOCK.COM is a memory-resident clock by Thomas G. Hanlin III
----------2FAB00-----------------------------
INT 2F - Btrieve Multi-User - INSTALLATION CHECK
AX = AB00h
Return: AL = 4Dh if installed
SeeAlso: AX=AB01h,AX=AB02h,INT 7B"Btrieve"
----------2FAB01-----------------------------
INT 2F - Btrieve Multi-User - EXECUTE Btrieve OPERATION
AX = AB01h
BX = process ID
DS:DX -> 38-byte parameter record (see INT 7B"Btrieve")
Return: AL = 00h OK
= other retry after calling INT 7F/AX=0200h
SeeAlso: AX=AB00h,AX=AB02h,INT 7B"Btrieve",INT 7F/AX=0200h
----------2FAB02-----------------------------
INT 2F - Btrieve Multi-User - GET NEW PROCESS ID
AX = AB02h
Return: AL = 00h succesful
BX = process ID
AL > 00h failed, retry after calling INT 7F/AX=0200h
SeeAlso: AX=AB00h,AX=AB01h,INT 7B"Btrieve",INT 7F/AX=0200h
----------2FAC00-----------------------------
INT 2F - DOS 4.01+ GRAPHICS.COM - INSTALLATION CHECK
AX = AC00h
Return: AX = FFFFh
ES:DI -> ??? (graphics data?) (not documented)
Note: this installation check was moved here to avoid the conflict with the
CD-ROM extensions that occurred in DOS 4.00
SeeAlso: AX=1500h"GRAPHICS"
----------2FAD00-----------------------------
INT 2F U - DOS 3.3+ DISPLAY.SYS internal - INSTALLATION CHECK
AX = AD00h
Return: AL = FFh if installed
BX = ??? (0100h in MS-DOS 3.30, PCDOS 4.01)
Note: DOS 5.0 DISPLAY.SYS chains to previous handler if AL is not one of the
subfunctions listed here
----------2FAD01-----------------------------
INT 2F U - DOS 3.3+ DISPLAY.SYS internal - SET ACTIVE CODE PAGE
AX = AD01h
BX = new code page
Return: CF clear if successful
AX = 0001h
CF set on error (unsupported code page)
AX = 0000h
SeeAlso: AX=AD02h
----------2FAD02-----------------------------
INT 2F U - DOS 3.3+ DISPLAY.SYS internal - GET ACTIVE CODE PAGE
AX = AD02h
Return: CF set if code page never set
AX = 0001h
BX = FFFFh (assume first hardware code page)
CF clear if successful
BX = current code page
SeeAlso: AX=AD01h,AX=AD03h
----------2FAD03-----------------------------
INT 2F U - DOS 3.3+ DISPLAY.SYS internal - GET CODE PAGE INFORMATION
AX = AD03h
ES:DI -> buffer for code page information (see below)
CX = size of buffer in bytes
Return: CF set if buffer too small
CF clear if successful
ES:DI buffer filled
SeeAlso: AX=AD01h,AX=AD02h
Format of DOS 5.0 code page information:
Offset Size Description
00h WORD number of software code pages
02h WORD ??? (0003h)
04h WORD number of hardware code pages
06h N WORDs hardware code page numbers
N WORDs software (prepared) code pages (FFFFh if not yet prepared)
----------2FAD04-----------------------------
INT 2F U - DOS 4.x only DISPLAY.SYS internal - ???
AX = AD04h
???
Return: ???
----------2FAD10-----------------------------
INT 2F U - DOS 4.x DISPLAY.SYS internal - INSTALLATION CHECK???
AX = AD10h
???
Return: AX = FFFFh
BX = ??? (0100h in PCDOS 4.01)
----------2FAD10-----------------------------
INT 2F U - DOS 5.0 DISPLAY.SYS internal - ???
AX = AD10h
???
Return: CF clear if successful
CF set on error
Note: this function is a NOP if the active code page has never been set
(AX=AD02h returns BX=FFFFh); its purpose otherwise is not known
----------2FAD40-----------------------------
INT 2F - DOS 4.0 - ???
AX = AD40h
DX = ???
???
Return: ???
Note: called by PCDOS 4.01 PRINT.COM
----------2FAD80-----------------------------
INT 2F u - DOS 3.3+ KEYB.COM internal - INSTALLATION CHECK
AX = AD80h
Return: AL = FFh if installed
BX = version number (BH = major, BL = minor)
ES:DI -> internal data (see below)
Notes: MSDOS 3.30, PCDOS 4.01, and MSDOS 5.00 all report version 1.00.
undocumented prior to the release of DOS 5.0
Format of KEYB internal data:
Offset Size Description
00h DWORD original INT 09
04h DWORD original INT 2F
08h 6 BYTEs ???
0Eh WORD flags
10h BYTE ???
11h BYTE ???
12h 4 BYTEs ???
16h 2 BYTEs country ID letters
18h WORD current code page
---DOS 3.3---
1Ah WORD pointer to first item in list of code page tables???
1Ch WORD pointer to ??? item in list of code page tables
1Eh 2 BYTEs ???
20h WORD pointer to key translation data
22h WORD pointer to last item in code page table list (see below)
24h 9 BYTEs ???
---DOS 4.01---
1Ah 2 BYTEs ???
1Ch WORD pointer to first item in list of code page tables???
1Eh WORD pointer to ??? item in list of code page tables
20h 2 BYTEs ???
22h WORD pointer to key translation data
24h WORD pointer to last item in code page table list (see below)
26h 9 BYTEs ???
Format of code page table list entries:
Offset Size Description
00h WORD pointer to next item, FFFFh = last
02h WORD code page
04h 2 BYTEs ???
Format of translation data:
Offset Size Description
00h WORD size of data in bytes, including this word
02h N-2 BYTEs ???
----------2FAD81-----------------------------
INT 2F - DOS 3.3+ KEYB.COM - SET KEYBOARD CODE PAGE
AX = AD81h
BX = code page (see INT 21/AX=6601h)
Return: CF set on error
AX = 0001h (code page not available)
CF clear if successful
Notes: called by DISPLAY.SYS
undocumented prior to the release of DOS 5.0
SeeAlso: AX=AD82h
----------2FAD82-----------------------------
INT 2F - DOS 3.3+ KEYB.COM - SET KEYBOARD MAPPING
AX = AD82h
BL = new state
00h US keyboard (Control-Alt-F1)
FFh foreign keyboard (Control-Alt-F2)
Return: CF set on error (BL not 00h or FFh)
CF clear if successful
Note: undocumented prior to the release of DOS 5.0
SeeAlso: AX=AD81h,AX=AD83h
----------2FAD83-----------------------------
INT 2F - DOS 5.0 KEYB.COM - GET KEYBOARD MAPPING
AX = AD83h
Return: BL = current state
00h US keyboard
FFh foreign keyboard
SeeAlso: AX=AD82h
----------2FAE00DXFFFF-----------------------
INT 2F U - DOS 3.3+ internal - INSTALLABLE COMMAND - INSTALLATION CHECK
AX = AE00h
DX = FFFFh
CH = FFh
CL = length of command line tail (4DOS v4.0)
DS:BX -> command line buffer (see below)
DS:SI -> command name buffer (see below)
DI = 0000h (4DOS v4.0)
Return: AL = FFh if this command is a TSR extension to COMMAND.COM
AL = 00h if the command should be executed as usual
Notes: This call provides a mechanism for TSRs to install permanent
extensions to the command repertoire of COMMAND.COM. It appears
that COMMAND.COM makes this call before executing the current
command line, and does not execute it itself if the return is FFh.
APPEND hooks this call, to allow subsequent APPEND commands to
execute without re-running APPEND
Format of command line buffer:
Offset Size Description
00h BYTE max length of command line, as in INT 21/AH=0Ah
01h BYTE count of bytes to follow, excluding terminating 0Dh
N BYTEs command line text, terminated by 0Dh
Format of command name buffer:
Offset Size Description
00h BYTE length of command name
01h N BYTEs uppercased command name (blank-padded to 11 chars by 4DOS v4)
----------2FAE01DXFFFF-----------------------
INT 2F U - DOS 3.3+ internal - INSTALLABLE COMMAND - EXECUTE
AX = AE01h
DX = FFFFh
CH = 00h
CL = length of command name (4DOS v4.0)
DS:SI -> command name buffer (see AX=AE00h)
DS:BX -> command line buffer (see AX=AE00h)
Return: DS:SI buffer updated
if length byte is nonzero, the following bytes contain the uppercase
internal command to execute and the command line buffer contains the
command's parameters (the first DS:[SI] bytes are ignored)
Notes: this call requests execution of the command which a previous call to
AX=AE00h indicated was resident
APPEND hooks this call
----------2FB000-----------------------------
INT 2F - DOS 3.3+ GRAFTABL.COM - INSTALLATION CHECK
AX = B000h
Return: AL = 00h not installed, OK to install
= 01h not installed, not OK to install
= FFh installed
Notes: called by DISPLAY.SYS
documented for DOS 5.0, but undocumented in prior versions
SeeAlso: AX=B001h
----------2FB001-----------------------------
INT 2F - DOS 3.3+ GRAFTABL.COM - GET GRAPHICS FONT TABLE
AX = B001h
DS:BX -> DWORD buffer for address of 8x8 font table
Return: buffer filled
AL = FFh
Note: PCDOS 3.30/4.01 set the font table offset to 0130h, MSDOS 3.30 to 0030h
SeeAlso: AX=B000h
----------2FB400-----------------------------
INT 2F - IBM PC3270 EMULATION PROG v3 - INSTALLATION CHECK
AX = B400h
Return: AL = FFh if installed
----------2FB401-----------------------------
INT 2F - IBM PC3270 EMULATION PROG v3 - GET HOST BUFFER ADDRESS
AX = B401h
Return: ES -> host screen buffer (PC ASCII format)
ES unchanged if communications not started
----------2FB402-----------------------------
INT 2F - IBM PC3270 EMULATION PROG v3 - ???
AX = B402h
BX = ???
Return: ???
----------2FB403-----------------------------
INT 2F - IBM PC3270 EMULATION PROG v3 - ???
AX = B403h
???
Return: ???
----------2FB404-----------------------------
INT 2F - IBM PC3270 EMULATION PROG v3 - ???
AX = B404h
???
Return: ???
----------2FB405-----------------------------
INT 2F - IBM PC3270 EMULATION PROG v3 - ???
AX = B405h
???
Return: ???
----------2FB700-----------------------------
INT 2F - APPEND - INSTALLATION CHECK
AX = B700h
Return: AL = status
00h not installed
FFh installed
Note: MSDOS 3.30 APPEND refuses to install itself when run inside TopView or
a TopView-compatible environment
----------2FB701-----------------------------
INT 2F U - APPEND - ???
AX = B701h
???
Return: ???
Note: MSDOS 3.30 APPEND displays "Incorrect APPEND Version" and aborts caller
----------2FB702-----------------------------
INT 2F - APPEND - VERSION CHECK
AX = B702h
Return: AX = FFFFh if not DOS 4.0 APPEND (also if DOS 5.0 APPEND)
AL = major version number
AH = minor version number, otherwise
SeeAlso: AX=B710h
----------2FB703-----------------------------
INT 2F U - DOS 3.3, DOS 5.0 APPEND - HOOK INT 21
AX = B703h
ES:DI -> INT 21 handler APPEND should chain to
Return: ES:DI -> APPEND's INT 21 handler
Note: each invocation of this function toggles a flag which APPEND uses to
determine whether to chain to the user handler or the original
INT 21
----------2FB704-----------------------------
INT 2F - DOS 3.3+ APPEND - GET APPEND PATH
AX = B704h
Return: ES:DI -> active APPEND path (128 bytes max)
----------2FB706-----------------------------
INT 2F - DOS 4+ APPEND - GET APPEND FUNCTION STATE
AX = B706h
Return: BX = APPEND state
bit 0: set if APPEND enabled
bits 1-11 reserved
bit 12: (DOS 5.0) set if APPEND applies directory search even if a
drive has been specified
bit 13: set if /PATH flag active
bit 14: set if /E flag active (environment var APPEND exists)
bit 15: set if /X flag active
----------2FB707-----------------------------
INT 2F - DOS 4+ APPEND - SET APPEND FUNCTION STATE
AX = B707h
BX = APPEND state bits (see AX=B706h)
----------2FB710-----------------------------
INT 2F U - DOS 3.3+ APPEND - GET VERSION INFO
AX = B710h
Return: AX = current APPEND state (see AX=B706h)
BX = ??? (0000h in MSDOS 3.30 and 5.00)
CX = ??? (0000h in MSDOS 3.30 and 5.00)
DL = major version
DH = minor version
SeeAlso: AX=B702h
----------2FB711-----------------------------
INT 2F - DOS 4+ APPEND - SET RETURN FOUND NAME STATE
AX = B711h
Note: if the next INT 21h call (and ONLY the next) is function 3Dh, 43h, or
6Ch (also 4B03h and 4Eh if /X active), the fully qualified filename is
written over top of the filename passed to the INT 21h call. The
application must provide a sufficiently large buffer. This state is
reset after the next INT 21h call processed by APPEND.
BUG: DOS 4.0 APPEND reportedly overwrites DS:DX instead of DS:SI for
INT 21/AH=6Ch
SeeAlso: INT 21/AH=4Eh
----------2FB800-----------------------------
INT 2F - network - INSTALLATION CHECK
AX = B800h
Return: AL = status
00h not installed
nonzero installed
BX = installed component flags (test in this order!)
bit 6 server
bit 2 messenger
bit 7 receiver
bit 3 redirector
bit 1 LANPUP (LANtastic 4.0)
Notes: this function is supported by SilverNET
LANtastic and NetWare Lite use only BL for the return value, preserving
BH; LAN Manager and DOS LAN Requester return BH=0. This permits
differentiation between those two groups by setting BH to a nonzero
value before the call and checking its value on return.
SeeAlso: AX=4E53h,AX=B809h
----------2FB803-----------------------------
INT 2F - network - GET NETWORK EVENT POST HANDLER
AX = B803h
Return: ES:BX -> event post handler (see AX=B804h)
SeeAlso: AX=B804h,AX=B903h
----------2FB804-----------------------------
INT 2F - network - SET NETWORK EVENT POST HANDLER
AX = B804h
ES:BX -> new event post handler
Notes: used in conjunction with AX=B803h to hook into the network event post
routine
The specified handler is called on any network event. Two events are
defined: message received and critical network error.
SeeAlso: AX=B803h,AX=B904h
Values post routine is called with:
AX = 0000h single block message
DS:SI -> ASCIZ originator name
DS:DI -> ASCIZ destination name
ES:BX -> text header (see below)
AX = 0001h start multiple message block
CX = block group ID
DS:SI -> ASCIZ originator name
DS:DI -> ASCIZ destination name
AX = 0002h multiple block text
CX = block group ID
ES:BX -> text header (see below)
AX = 0003h end multiple block message
CX = block group ID
AX = 0004h message aborted due to error
CX = block group ID
AX = 0101h server received badly formatted network request
Return: AX = FFFFh (PC LAN will process error)
AX = 0102h unexpected network error
ES:BX -> NCB (see INT 5C)
AX = 0103h server received INT 24 error
other registers as for INT 24, except AH is in BH
Return: as below, but only 0000h and FFFFh allowed
Return: AX = response code
0000h user post routine processed message
0001h PC LAN will process message, but message window not displayed
FFFFh PC LAN will process message
Format of text header:
Offset Size Description
00h WORD length of text (maximum 512 bytes)
02h N BYTEs text of message
Note: all CRLF sequences in message text are replaced by 14h
----------2FB807-----------------------------
INT 2F - Network - GET NetBIOS NAME NUMBER OF MACHINE NAME
AX = B807h
Return: CH = NetBIOS name number of the machine name
SeeAlso: INT 21/AX=5E00h
----------2FB808-----------------------------
INT 2F U - Network - RELINK KEYBOARD HANDLER
AX = B808h
ES:BX -> INT 09 handler network should call after it finishes INT 09
Notes: this call replaces the address to which the network software chains on
an INT 09 without preserving the original value. This allows a prior
handler to unlink, but does not allow a new handler to be added
such that the network gets the INT 09 first unless the new handler
completely takes over INT 09 and never chains.
called by DOS 3.2 KEYBxx.COM
SeeAlso: AX=B908h
----------2FB809-----------------------------
INT 2F - LANtastic Network, NetWare Lite - VERSION CHECK
AX = B809h
Return: AH = major version
AL = minor version (decimal)
Note: this function is also supported by SilverNET
SeeAlso: AX=4E53h,AX=B800h,AX=B809h"LAN Manager"
----------2FB809-----------------------------
INT 2F - PC LAN Program, LAN Manager, DOS LAN Requester - VERSION CHECK
AX = B809h
Return: AH = minor version (decimal)
AL = major version
SeeAlso: AX=4E53h,AX=B800h,AX=B809h"LANtastic"
----------2FB80F-----------------------------
INT 2F - DOS LAN Requester - GET START PARAMETERS
AX = B80Fh
CX = size of return data buffer
ES:DI -> return data buffer
Return: AX = status
00h network started
nonzero network not started
CX = number of bytes returned in buffer
ES:DI buffer filled
Format of return data buffer:
Offset Size Description
00h BYTE major version
01h BYTE minor version
02h WORD configuration flags given when the network was started
bit 0 /NVS != 0
bit 1 /NMS != 0
bit 2 /API
bit 3 /HIM
bit 4 /LIM
bit 5 /ENC
bit 6 /POP
bit 7 /EMS
bit 8 /RPL
bits 9-12 Reserved
bit 13 RDR started
bit 14 RCV started
bit 15 User is currently logged on
04h 15 BYTEs NET START machine name (space padded)
13h BYTE 00h
14h 9 BYTEs NET START domain name (NULL padded)
1Dh BYTE 00h
1Eh 32 BYTEs /WRK heuristics string (space padded, not terminated)
3Eh WORD /SRV value
40h WORD /ASG value
42h WORD /NBC value
44h WORD /NBS value
46h WORD /BBC value
48h WORD /BBS value
4Ah WORD /PBC value
4Ch WORD /PBS value
4Eh WORD /PFS value
50h WORD /PFT value
52h WORD /PWT value
54h WORD /KUC value
56h WORD /KST value
58h WORD /NVS value
5Ah WORD /NMS value
5Ch WORD /NDB value
5Eh WORD /MBI value
60h BYTE NetBIOS name number for machine name
61h BYTE NetBIOS name number for domain name
62h WORD NetBIOS sessions required for configuration
64h WORD NetBIOS commands required for configuration
66h WORD NetBIOS names required for configuration
68h 128 BYTEs NET START path (LANROOT)
E8h BYTE 00h
----------2FB900-----------------------------
INT 2F - PC Network RECEIVER.COM - INSTALLATION CHECK
AX = B900h
Return: AL = 00h if not installed
FFh if installed
----------2FB901-----------------------------
INT 2F - PC Network RECEIVER.COM - GET RECEIVER.COM INT 2F HANDLER ADDRESS
AX = B901h
Return: AL = ???
ES:BX -> RECEIVER.COM INT 2F handler
Note: allows more efficient execution by letting the caller bypass any other
INT 2F handlers which have been added since RECEIVER.COM was
installed
----------2FB903-----------------------------
INT 2F - PC Network RECEIVER.COM - GET RECEIVER.COM POST ADDRESS
AX = B903h
Return: ES:BX -> POST handler
SeeAlso: AX=B803h,AX=B904h
----------2FB904-----------------------------
INT 2F - PC Network RECEIVER.COM - SET RECEIVER.COM POST ADDRESS
AX = B904h
ES:BX -> new POST handler
SeeAlso: AX=B804h,AX=B903h
----------2FB905-----------------------------
INT 2F - PC Network RECEIVER.COM - GET FILENAME
AX = B905h
DS:BX -> 128-byte buffer for filename 1
DS:DX -> 128-byte buffer for filename 2
Return: buffers filled from RECEIVER.COM internal buffers
Note: use of filenames is unknown, but one appears to be for storing messages
SeeAlso: AX=B906h
----------2FB906-----------------------------
INT 2F - PC Network RECEIVER.COM - SET FILENAME
AX = B906h
DS:BX -> 128-byte buffer for filename 1
DS:DX -> 128-byte buffer for filename 2
Return: RECEIVER.COM internal buffers filled from user buffers
Note: use of filenames is unknown, but one appears to be for storing messages
SeeAlso: AX=B905h
----------2FB908-----------------------------
INT 2F - PC Network RECEIVER.COM - UNLINK KEYBOARD HANDLER
AX = B908h
ES:BX -> INT 09 handler RECEIVER should call after it finishes INT 09
Note: this call replaces the address to which RECEIVER.COM chains on an
INT 09 without preserving the original value. This allows a prior
handler to unlink, but does not allow a new handler to be added
such that RECEIVER gets the INT 09 first.
SeeAlso: AX=B808h
----------2FBC00-----------------------------
INT 2F - Windows 3.0, DOS 5.0 EGA.SYS - INSTALLATION CHECK
AX = BC00h
Return: AL = 00h not installed, OK to install
= 01h not installed, not OK to install
= FFh installed
BX = 5456h ("TV")
Note: AH=BCh is the default value, which may be changed by a command line
parameter to any value between 80h and FFh
SeeAlso: AX=BC06h,INT 10/AH=FAh"EGA"
----------2FBC06-----------------------------
INT 2F U - MS Windows 3.0, DOS 5.0 EGA.SYS - GET VERSION INFO
AX = BC06h
Return: BX = 5456h ("TV")
CH = major version
CL = minor version
DL = revision
SeeAlso: AX=BC00h,INT 10/AH=FAh"EGA"
----------2FBE00-----------------------------
INT 2F - REDVIEW - INSTALLATION CHECK
AX = BE00h
Return: AL = FFh if installed
Note: REDVIEW is a public-domain TSR by Alexandr Novy and Petr Horak which
copies data sent to standard output to standard error when the
former has been redirected to a file, thus allowing the data to
be seen on the screen at the same time it is captured in a file
----------2FBF00-----------------------------
INT 2F - PC LAN PROGRAM REDIRIFS.EXE internal - INSTALLATION CHECK
AX = BF00h
Return: AL = FFh if installed
----------2FBF01-----------------------------
INT 2F U - PC LAN PROGRAM REDIRIFS.EXE internal - ???
AX = BF01h
???
Return: ???
----------2FBF80-----------------------------
INT 2F - PC LAN PROG REDIR.SYS internal - SET REDIRIFS ENTRY POINT
AX = BF80h
ES:DI -> FAR entry point to IFS handler in REDIRIFS
Return: AL = FFh if installed
ES:DI -> internal workspace
Note: all future IFS calls to REDIR.SYS are passed to the ES:DI entry point
---------------------------------------------
Interrupt List, part 6 of 8
This compilation is Copyright (c) 1989,1990,1991,1992,1993 Ralf Brown
----------2FC0-------------------------------
INT 2F - MTEZ XpressFax Hardware TSR (CLASS2) - API
AH = C0h
AL = function code (01h to 15h)
Return: ???
SeeAlso: AX=C000h"MTEZ",AX=CB00h"MTEZ"
----------2FC000-----------------------------
INT 2F - Novell ODI Link Support Layer (LSL.COM) - INSTALLATION CHECK
AX = C000h
Return: AL = FFh
ES:BX -> FAR entry point
ES:SI -> signature string "LINKSUP$"
Note: LSL.COM may use any multiplex number between C0h and FFh; it searches
for itself in that range, and installs using the first free multiplex
number in the range if not already loaded.
Call entry point with:
BX = 0002h get entry points
ES:SI -> buffer for entry point record (see below)
Return: ES:SI buffer filled
Format of entry point record:
Offset Size Description
00h DWORD pointer to ??? entry point in LSL
04h DWORD pointer to ??? entry point in LSL
----------2FC000-----------------------------
INT 2F - MTEZ XpressFax Hardware TSR (CLASS2) - INSTALLATION CHECK
AX = C000h
BX = 444Bh
CX = 4A4Eh
Return: AL = status
00h not installed, OK to install
FFh installed
BX = 646Bh
CX = 6A6Eh
Note: this TSR will use any free multiplex number from C0h to FFh
SeeAlso: AH=C0h"MTEZ"
----------2FC000-----------------------------
INT 2F - AD-DOS - INSTALLATION CHECK
AX = C000h
Return: AL = FFh if installed
BX = 4144h ('AD')
CX = 2D44h ('-D')
DX = 4F53h ('OS')
Program: AD-DOS is the DOS version of the After Dark screen blanker for
MS Windows
Note: AH=C0h is the default multiplex number; if this is already in use,
After Dark will try successive values up to AH=FFh
SeeAlso: AX=C001h,AX=C003h,AX=C005h,AX=C007h,AX=C009h,AX=C020h
----------2FC001ES0000-----------------------
INT 2F - AD-DOS - GET RESIDENT CODE SEGMENT
AX = C001h
ES = 0000h
Return: AL = 00h if successful
ES = AD-DOS TSR Code Segment
SeeAlso: AX=C000h"AD-DOS"
----------2FC002-----------------------------
INT 2F - AD-DOS - CHECK FOR NEW INPUT
AX = C002h
Return: AL = 00h if succesful
BX = status
0000h no input since last check
0001h new input available
Note: this call also resets the new-input flag
SeeAlso: AX=C000h"AD-DOS",AX=C004h
----------2FC003-----------------------------
INT 2F - AD-DOS - SET MINUTES TO WAIT
AX = C003h
BX = minutes to wait before blanking screen
Return: AL = 00h if successful
Program: AD-DOS is the DOS version of the After Dark screen blanker for
MS Windows
Notes: AH=C0h is the default multiplex number; if this is already in use,
After Dark will try successive values up to AH=FFh
this call also resets the delay timer
SeeAlso: AX=C000h"AD-DOS",AX=C004h
----------2FC004-----------------------------
INT 2F - AD-DOS - GET MINUTES TO WAIT
AX = C004h
Return: AL = 00h if succesful
BX = minutes to wait before blanking screen
SeeAlso: AX=C000h"AD-DOS",AX=C003h
----------2FC005-----------------------------
INT 2F - AD-DOS - SET BLANKER STATUS
AX = C005h
BX = new state (0000h inactive, 0001h active) (default 0001h)
Return: AL = 00h if successful
SeeAlso: AX=C006h
----------2F0C06-----------------------------
INT 2F - AD-DOS - GET BLANKER STATUS
AX = C006h
Return: AL = 00h if successful
BX = current state of screen blanker (0000h inactive, 0001h active)
Program: AD-DOS is the DOS version of the After Dark screen blanker for
MS Windows
Note: AH=C0h is the default multiplex number; if this is already in use,
After Dark will try successive values up to AH=FFh
SeeAlso: AX=C000h"AD-DOS",AX=C005h
----------2F0C07-----------------------------
INT 2F - AD-DOS - SET HOT KEY
AX = C007h
BX = hot key
CL = hot key shift status
Return: AL = 00h if successful
SeeAlso: AX=C008h
----------2F0C08-----------------------------
INT 2F - AD-DOS - GET CURRENT HOT KEY
AX = C008h
Return: AX = status
0000h successful
BX = Hot Key
CL = Hot Key Shift Status
0008h otherwise
SeeAlso: AX=C000h"AD-DOS",AX=C007h
----------2F0C09-----------------------------
INT 2F - AD-DOS - UNBLANK MONITOR
AX = C009h
Return: AL = 00h if successful
Program: AD-DOS is the DOS version of the After Dark screen blanker for
MS Windows
Notes: AH=C0h is the default multiplex number; if this is already in use,
After Dark will try successive values up to AH=FFh
this function works by simulating keyboard activity
----------2F0C0A-----------------------------
INT 2F - AD-DOS - ???
AX = C00Ah
Return: AX = status
0000h successful
BH = ??
BL = ??
000Ah failed
----------2F0C0B-----------------------------
INT 2F - AD-DOS - ???
AX = C00Bh
Return: AX = status
0000h successful
000Bh failed
----------2F0C0C-----------------------------
INT 2F - AD-DOS - SET ??? INTERNAL FLAG TO 01h
AX = C00Ch
Return: AX = status
0000h successful
000Ch failed
Program: AD-DOS is the DOS version of the After Dark screen blanker for
MS Windows
Note: AH=C0h is the default multiplex number; if this is already in use,
After Dark will try successive values up to AH=FFh
----------2F0C0E-----------------------------
INT 2F - AD-DOS - SET PASSWORD STATUS
AX = C00Eh
BX = new state (0000h disabled, 0001h enabled)
Return: ???
SeeAlso: AX=C000h"AD-DOS",AX=C00Fh
----------2F0C0F-----------------------------
INT 2F - AD-DOS - GET PASSWORD STATUS
AX = C00Fh
Return: BX = current state (0000h disabled, 0001h enabled)
SeeAlso: AX=C00Eh
----------2F0C20-----------------------------
INT 2F - AD-DOS - GET AND RESET VxD API STATUS
AX = C020h
Return: AL = 00h if successful
BX = VxD API Status
0000h no error
0001h error
0100h neither Windows 3.X enhanced mode nor
Windows/386 2.x is running
0200h VM API entry point not found (VxD not installed)
Notes: AH=C0h is the default multiplex number; if this is already in use,
After Dark will try successive values up to AH=FFh
this call resets the VxD API Status to zero
SeeAlso: AX=1602h,AX=1607h
----------2FC050-----------------------------
INT 2F U - Explosiv 2.00 - INSTALLATION CHECK
AX = C050h
Return: AL = 51h if installed
Notes: Explosiv is a shareware animated screen blanker for DOS and Windows 3
by Reidar Gresseth and Chris Hook
AH=C0h is the default multiplex number, but may be reconfigured to
any value from C0h to C9h
SeeAlso: AX=C052h
----------2FC052-----------------------------
INT 2F U - Explosiv 2.00 - UNINSTALL
AX = C052h
DX:BX = address to return to on successful uninstall
Return: at specified address if successful
AL = 53h on error
Note: specified return address must have the segment of the caller's PSP
SeeAlso: AX=C050h
----------2FC054-----------------------------
INT 2F U - Explosiv 2.00 - GET ???
AX = C054h
Return: AL = ???
Note: returns value set by AX=C057h
SeeAlso: AX=C057h
----------2FC055-----------------------------
INT 2F U - Explosiv 2.00 - SET BLANKING INTERVAL
AX = C055h
BX = new interval in clock ticks
----------2FC056-----------------------------
INT 2F U - Explosiv 2.00 - SET ???
AX = C056h
BL = ???
----------2FC057-----------------------------
INT 2F U - Explosiv 2.00 - SET ???
AX = C057h
BL = ???
SeeAlso: AX=C054h
----------2FC058-----------------------------
INT 2F U - Explosiv 2.00 - SET ???
AX = C058h
BL = ???
----------2FC059-----------------------------
INT 2F U - Explosiv 2.00 - CLEAR ???
AX = C059h
Note: clears flag set by AX=C05Ah
SeeAlso: AX=C05Ah
----------2FC05A-----------------------------
INT 2F U - Explosiv 2.00 - SET ???
AX = C05Ah
BL = ???
Note: sets flag cleared by AX=C059h then stores BL
SeeAlso: AX=C059h,AX=C05Bh
----------2FC05B-----------------------------
INT 2F U - Explosiv 2.00 - SET ???
AX = C05Bh
BL = ???
SeeAlso: AX=C05Ah,AX=C05Ch
----------2FC05C-----------------------------
INT 2F U - Explosiv 2.00 - SET ???
AX = C05Ch
BL = ???
SeeAlso: AX=C05Bh
----------2FC900BP0000-----------------------
INT 2F U - ThunderByte??? - INSTALLATION CHECK
AX = C900h
BP = 0000h
Return: AL = FFh if installed
BP >= 0014h
Note: called by TBSCANX
SeeAlso: AX=C987h,AX=CA00h
----------2FC987-----------------------------
INT 2F U - ThunderByte??? - DISINFECT FILE???
AX = C987h
BX:DX -> filename
BX:CX -> virus name
Return: AX = status
0000h successful???
Note: called by TBSCANX
SeeAlso: AX=CA00h
----------2FC9FF-----------------------------
INT 2F C - STACKMAN - INSTALLATION BROADCAST
AX = C9FFh
BL = BCD version number
CX = number of stacks
DX = stack size in bytes
Notes: called by STACKMAN when it goes resident to inform interested TSRs that
its API is available
the installation check consists of testing for the string "STACKXXX" at
offset 0Ah from the INT B4 handler
SeeAlso: INT B4"STACKMAN",INT B5"STACKMAN"
----------2FCA00BX5442-----------------------
INT 2F - TBSCANX - INSTALLATION CHECK
AX = CA00h
BX = 5442h ('TB')
Return: AL = 00h not installed
= FFh installed
BX = 7462h ('tb') if BX was 5442h on entry
Note: TBSCANX is a resident virus scanning module by Frans Veldman. Programs
may perform virus checks on themselves, other program files, or their
data files by invoking the TBSCANX API.
SeeAlso: AX=4653h,AX=C900h
----------2FCA01-----------------------------
INT 2F - TBSCANX - GET STATUS
AX = CA01h
Return: AH = BCD version number (v2.2+)
= CAh for versions before 2.2
AL = state (00h = disabled, 01h = enabled)
CX = number of signatures which will be searched
---v2.0---
BX = EMS handle, 0000h if not using EMS
---v2.3+---
BX = segment of swap area, 0000h if not swapped
DX = EMS or XMS handle (XMS handle if BX=0000h), FFFFh if not using EMS
SeeAlso: AX=CA02h
----------2FCA02-----------------------------
INT 2F - TBSCANX - SET STATE
AX = CA02h
BL = new state (00h = disabled, 01h = enabled)
SeeAlso: AX=CA01h
----------2FCA03-----------------------------
INT 2F - TBSCANX - SCAN BUFFER
AX = CA03h
CX = size of buffer
DS:DX -> buffer containing data to scan
Return: CF clear if no virus signatures found
BX,ES destroyed
CF set if signature found
ES:BX -> ASCIZ virus name (v2.3+)
DS:DX -> ASCIZ virus name (v2.0)
AX,CX,DX destroyed (v2.3+)
all other registers except CS:IP and SS:SP destroyed (v2.0)
SeeAlso: AX=CA04h
----------2FCA04-----------------------------
INT 2F - TBSCANX - SCAN FILE
AX = CA04h
DS:DX -> filename
Return: CF clear if no virus signatures found
BX,ES destroyed
CF set if signature found
ES:BX -> ASCIZ virus name
AX,CX,DX destroyed
Note: this function requires at least 4K free memory
SeeAlso: AX=CA03h
----------2FCAFEBX0000-----------------------
INT 2F U - THELP v3.0 - INSTALLATION CHECK
AX = CAFEh
BX = 0000h
Return: BX = segment of resident code if installed
= 0000h if not installed
SeeAlso: AX=5453h
----------2FCB00-----------------------------
INT 2F - Communicating Applications Specification - INSTALLATION CHECK
AX = CB00h
Return: AL = status
00h not installed, OK to install
01h not installed, not OK to install
FFh installed
Note: AH = CBh is the default identifier, but may be reconfigured
SeeAlso: AH=2Ah,AX=8000h"FaxBIOS",AX=CB0Eh,AX=CBDCh
----------2FCB00BX4D53-----------------------
INT 2F - MTEZ XpressFax CASMGR - INSTALLATION CHECK
AX = CB00h
BX = 4D53h
CX = 4949h
Return: AL = status
00h not installed, OK to install
01h not installed, not OK to install
FFh installed
BX = 6D73h
CX = 6969h
Note: this function is equivalent to the standard CASMGR installation check,
but uses the additional magic values to identify which CAS is
installed
SeeAlso: AH=2Ah,AX=8000h"FaxBIOS",AX=C000h"MTEZ",AX=CB0Eh,AX=CB16h
----------2FCB01-----------------------------
INT 2F - Communicating Applications Specification - SUBMIT A TASK
AX = CB01h
DS:DX -> ASCIZ name of task control file
Return: AX >= 0: event handle
< 0: error code
Note: files needed for an event must be kept until task is complete or error
SeeAlso: AX=CB0Bh,AX=CB15h
Error codes (AH = class, AL = subcode, value passed back is 2's complement):
Class 00h --- FAX warnings
Subcode 00h no error
02h bad scanline count
03h page sent with errors, could not retransmit
04h received data lost
05h invalid or missing logo file
06h filename does not match nonstandard format (NSF) header
07h file size does not match NSF header
Class 01h --- DOS warnings (data was sent)
Subcode 01h invalid function
05h access denied
06h invalid handle
others see INT 21/AH=59h
Class 02h --- fatal errors (data not sent)
Subcode 00h multiplex handler failed
01h unknown command
02h bad event handle
03h FIND NEXT attempted before FIND FIRST
04h no more events
07h invalid queue type
08h bad control file
09h communication board busy
0Ah invalid command parameter
0Bh can't uninstall resident code
0Ch file exists
80h unknown task type
81h bad phone number
82h bad .PCX file header
83h unexpected EOF
84h unexpected disconnect
85h too many dialing retries
86h no file specified for send
87h communication board timeout
88h received too many pages (>1023) of data
89h manual connect initiated too long ago
8Ah hardware command set error
8Bh bad NonStandard Format (NSF) header file
Class 03h --- fatal DOS errors
Subcode 02h file not found
03h path not found
others see INT 21/AH=59h
Class 04h --- FAX errors
Subcode 01h remote unit not Group 3 compatible
02h remote unit did not send capabilities
03h other FAX machine incompatible
04h other FAX incapable of file transfers
05h exceeded retrain or FAX resend limit
06h line noise or failure to agree on bit rate
07h remote disconnected after receiving data
08h no response from remote after sending data
09h remote's capabilities incompatible
0Ah no dial tone (v1.2+)
0Bh invalid response from remote unit after sending data
0Dh phone line dead or remote unit disconnected
0Eh timeout while waiting for secondary dial tone (v1.2+)
11h invalid command from remote after receiving data
15h tried to receive from incompatible hardware
5Ch received data overflowed input buffer
5Dh remote unexpectedly stopped sending data
5Eh other FAX machine jammed (no data sent)
5Fh remote took too long to send fax scan line
63h can't get through to remote unit
64h user canceled event
Class 05h --- application-specific (v1.2+)
---Intel FAXPOP.EXE
Subcode 00h tried to send while in graphics mode
01h insufficient disk space
02h internal buffer overflow
Class 06h --- CAS implementation-specific (v1.2+)
----------2FCB02-----------------------------
INT 2F - Communicating Applications Specification - ABORT CURRENT EVENT
AX = CB02h
Return: AX >= 0: event handle of aborted event
< 0: error code (see AX=CB01h)
Note: termination could take up to 30 seconds
SeeAlso: AX=CB08h,AX=CB10h
----------2FCB05-----------------------------
INT 2F - Communicating Applications Specification - FIND FIRST QUEUE ENTRY
AX = CB05h
CX = status of events to find
0000h successful completion
0001h waiting to be processed
0002h number has been dialed
0003h connection established, sending
0004h connection established, receiving
0005h event aborted
FFFFh find any event, regardless of status
other negative values, match error code
DH = direction
00h chronological order, earliest to latest
01h reverse chronological order, latest to earliest
DL = queue to search
00h task queue
01h receive queue
02h log queue
Return: AX = 0000h successful
BX = event handle for found event
< 0 error code (see AX=CB01h)
SeeAlso: AX=CB06h,AX=CB07h
----------2FCB06-----------------------------
INT 2F - Communicating Applications Specification - FIND NEXT QUEUE ENTRY
AX = CB06h
DL = queue to search
00h task queue
01h receive queue
02h log queue
Return: AX = 0000h successful
BX = event handle for found event
< 0 error code (see AX=CB01h)
Note: direction of search is same as preceding FIND FIRST call
SeeAlso: AX=CB05h
----------2FCB07-----------------------------
INT 2F - Communicating Applications Specification - OPEN FILE
AX = CB07h
BX = event handle from find (AL=05h,06h) or submit task (AL=01h)
CX = receive file number (ignored for task queue and log queue)
0000h open receive control file
N open Nth received data file
DL = queue
00h task queue
01h receive queue control file or received file, as given by CX
02h log queue
03h group file in task queue (v1.2+)
04h group file in log queue (v1.2+)
Return: AX = 0000h successful
BX = DOS file handle for requested file
< 0 error code (see AX=CB01h)
Note: the returned file handle has been opened in read-only mode and should
be closed with INT 21/AH=3Eh after use
SeeAlso: AX=CB01h,AX=CB05h,AX=CB14h
----------2FCB08-----------------------------
INT 2F - Communicating Applications Specification - DELETE FILE
AX = CB08h
BX = event handle
CX = receive file number
0000h delete ALL received files and receive control file
N delete Nth received file
DL = queue
00h delete control file in task queue and corresponding group file
if it exists
01h delete file in receive queue, as given by CX
02h delete control file in log queue (individual deletions not
recommended, to maintain integrity of log) and corresponding
group file if it exists
Return: AX = 0000h successful
< 0 error code (see AX=CB01h)\
SeeAlso: AX=CB02h,AX=CB09h
----------2FCB09-----------------------------
INT 2F - Communicating Applications Specification - DELETE ALL FILES IN Q
AX = CB09h
DL = queue
00h delete all control files in task queue, including all group
files
01h delete all files in receive queue
02h delete all control files in log queue, including all group
files
Return: AX = 0000h successful
< 0 error code (see AX=CB01h)
SeeAlso: AX=CB08h
----------2FCB0A-----------------------------
INT 2F - Communicating Applications Specification - GET EVENT DATE
AX = CB0Ah
BX = event handle
DL = queue
00h task queue
01h receive queue
02h log queue
Return: AX = 0000h successful
CX = year
DH = month
DL = day
< 0 error code (see AX=CB01h)
SeeAlso: AX=CB0Bh,AX=CB0Ch
----------2FCB0B-----------------------------
INT 2F - Communicating Applications Specification - SET TASK DATE
AX = CB0Bh
BX = event handle (task event only)
CX = year
DH = month
DL = day
Return: AX = 0000h successful
< 0 error code (see AX=CB01h)
Note: setting a task's date and time to before the current date and time
causes it to execute immediately
SeeAlso: AX=CB01h,AX=CB0Ah,AX=CB0Dh
----------2FCB0C-----------------------------
INT 2F - Communicating Applications Specification - GET EVENT TIME
AX = CB0Ch
BX = event handle
DL = queue
00h task queue
01h receive queue
02h log queue
Return: AX = 0000h successful
CH = hour
CL = minute
DH = second
DL = 00h
< 0 error code (see AX=CB01h)
SeeAlso: AX=CB0Ah,AX=CB0Dh
----------2FCB0D-----------------------------
INT 2F - Communicating Applications Specification - SET TASK TIME
AX = CB0Dh
BX = event handle (task events only)
CH = hour
CL = minute
DH = second
DL unused
Return: AX = 0000h successful
< 0 error code (see AX=CB01h)
Note: setting a task's date and time to before the current date and time
causes it to execute immediately
SeeAlso: AX=CB0Bh,AX=CB0Ch,AX=CB10h
----------2FCB0E-----------------------------
INT 2F - Communicating Applications Specification - GET EXTERNAL DATA BLOCK
AX = CB0Eh
DS:DX -> 256-byte buffer
Return: AX = 0000h successful
buffer filled
< 0 error code (see AX=CB01h)
Format of external data block:
Offset Size Description
00h BYTE CAS major version
01h BYTE CAS minor version
02h 68 BYTEs ASCIZ path to directory containing CAS software, ends in slash
46h 13 BYTEs ASCIZ name of current phonebook (in CAS directory)
53h 13 BYTEs ASCIZ name of current logo file (in CAS directory)
60h 32 BYTEs ASCIZ default sender name
80h 21 BYTEs ASCIZ CCITT identification of fax device
95h 107 BYTEs reserved
----------2FCB0F-----------------------------
INT 2F - Communicating Applications Specification - GET/SET AUTORECEIVE
AX = CB0Fh
DL = subfunction
00h get current autoreceive state
01h set autoreceive state
DH = number of rings before answer, 00h = never
Return: AX = 0000h autoreceive disabled
= N number of rings before answer
< 0 error code (see AX=CB01h)
----------2FCB10-----------------------------
INT 2F - Communicating Applications Specification - GET CURRENT EVENT STATUS
AX = CB10h
DS:DX -> 512-byte buffer
Return: AX = 0000h successful
BX = event handle of current event or negative error code if
no current event
buffer filled
< 0 error code (see AX=CB01h)
SeeAlso: AX=CB02h,AX=CB0Dh
Format of status area:
Offset Size Description
00h BYTE event type
00h send
01h receive
02h polled send
03h polled receive
04h to 7Fh reserved
FFh serious hardware error
01h BYTE transfer type
00h 200x200 dpi, FAX mode
01h 100x200 dpi, FAX mode
02h file transfer mode
03h to 7Fh reserved
02h WORD event status
0000h completed successfully
0001h waiting
0002h number dialed
0003h connected, sending
0004h connected, receiving
0005h aborted
0006h to 007Fh reserved
0080h to 7FFFh application-specific events
8000h to FFFFh error codes
04h WORD event time (packed DOS time format, see INT 21/AX=5700h)
06h WORD event date (packed DOS date format, see INT 21/AX=5700h)
08h WORD number of files to transfer, max 7FFFh
0Ah WORD offset of file transfer record
0Ch 47 BYTEs ASCIZ phone number to call
3Bh 64 BYTEs ASCIZ application-specific tag string
7Bh BYTE reserved (00h)
7Ch BYTE connect time, seconds
7Dh BYTE connect time, minutes
7Eh BYTE connect time, hours
7Fh DWORD total number of pages in all files
83h DWORD pages already transmitted
87h WORD number of files already transmitted
89h BYTE cover page flag
00h don't transmit cover page
01h transmit cover page
02h to 7Fh reserved
8Ah WORD total number of transmission errors
8Ch 78 BYTEs reserved (zeros)
DAh 21 BYTEs ASCIZ remote FAX's CCITT identification
EFH 32 BYTEs ASCIZ destination name
10Fh 32 BYTEs ASCIZ sender name
12Fh 80 BYTEs filename of PCX logo file (max 1780x800 pixels)
17Fh 128 BYTEs file transfer record for current event (see below)
Format of file transfer record:
Offset Size Description
00h BYTE file type (ignored unless FAX)
00h ASCII
01h PCX
02h DCX
03h to 7Fh reserved
01h BYTE text size for ASCII FAX file
00h = 80 columns by 66 lines (11 inches)
01h = 132 columns by 88 lines (11 inches)
02h to 7Fh reserved
02h BYTE status of file
00h untouched
01h opened
02h moved
03h deleted
04h not yet received
05h to 7Fh reserved
03h DWORD bytes already transmitted
07h DWORD file size in bytes
0Bh WORD pages alread transmitted
0Dh WORD number of pages in file
0Fh 80 BYTEs ASCIZ filename
5Fh BYTE 1/8 inch page length
if page length below set to 01h through 7Fh, this value
specifies additional 1/8 inch increments to page length
60h BYTE page length
00h = 11 inches
01h to 7Fh = page length is this number of inches plus value of
1/8 inch field above
80h to FEh reserved
FFh = ASCII pages ending with formfeed
61h 31 BYTEs reserved (zeros)
----------2FCB11-----------------------------
INT 2F - Communicating Applications Specification - GET QUEUE STATUS
AX = CB11h
DL = queue to get status of
00h task queue
01h receive queue
02h log queue
03h send events (v1.2+)
04h receive events (v1.2+)
Return: AX >= 0 total number of changes made to queue, modulo 32768
BX = number of control files currently in queue
CX = number of received files (zero for task and log queues)
AX < 0 error code (see AX=CB01h)
SeeAlso: AX=CB12h
----------2FCB11DL03-------------------------
INT 2F - Communicating Applications Spec v1.2+ - GET NUMBER OF SEND EVENTS
AX = CB11h
DL = 03h
Return: AX = number of successful sends since resident manager started
BX = number of unsuccessful sends, including warnings
SeeAlso: AX=CB11h/DL=04h
----------2FCB11DL04-------------------------
INT 2F - Communicating Applications Spec v1.2+ - GET NUMBER OF RECEIVE EVENTS
AX = CB11h
DL = 04h
Return: AX = number of received file events since resident manager started
BX = number of received FAX events
SeeAlso: AX=CB11h/DL=03h
----------2FCB12-----------------------------
INT 2F - Communicating Applications Specification - GET HARDWARE STATUS
AX = CB12h
DS:DX -> 128-byte status buffer
Return: AX = 0000h successful
buffer filled with hardware-dependent status information
< 0 error code (see AX=CB01h)
SeeAlso: AX=CB10h,AX=CB11h
Format of status buffer for Intel Connection CoProcessor:
Offset Size Description
00h BYTE bit flags
bit 7: hardware busy sending or receiving
bit 6: last page of data
bit 5: no data on current page
bit 4: retransmit request for current page being transmitted
bit 3: NSF mode active
bits 2-0: reserved
01h BYTE number of kilobytes of free buffer space
02h BYTE page buffer status
bit 7: Connection CoProcessor has documents to send
bits 6-0: number of pages in buffer
03h BYTE number of retries left for dialing number
04h BYTE page number to retransmit
05h BYTE communications status
bit 7: originating call
bit 6: FAX message to be sent
bit 5: on line
bit 4: ring detected and receive enabled
bit 3: buffer dumped on receive
bits 2-0: hardware sequence state
000 idle
001 dial
010 answer
011 transmit
100 receive
101 pre-message
110 post-message
111 disconnect
06h BYTE baud rate
bit 7: reserved
bits 6-4: baud rate
000 = 300 baud (V.21 SDLC or HDLC mode)
100 = 2400 baud (V.27 ter)
101 = 4800 baud (V.27 ter)
110 = 7200 baud (V.29)
111 = 9600 baud (V.29)
bits 3-0: reserved, should be 0110
07h 3 BYTEs reserved
0Ah BYTE hardware status
bit 7: modem option installed
bit 6: Connection CoProcessor has control of DAA (not latched)
bit 5: on line (not latched)
bit 4: ring detected (not latched)
bit 3: data in command buffer (not latched)
bit 2: set if using DMA channel 1, clear if using DMA channel 3
bit 1: line length compensation bit 1 set (not latched)
bit 0: line length compensation bit 0 set (not latched)
0Bh BYTE switch states
bit 7: reserved
bit 6: unused
bit 5: spare switch open
bit 4: FAX ADR1 switch open
bit 3: FAX ADR0 switch open
bit 2: alternate interrupt switch open
bit 1: COM SEL 1 switch open
bit 0: COM SEL 0 switch open
Note: valid combinations of bits 0-2 are
000 COM2 IRQ3 IObase 2F8h
001 COM1 IRQ4 IObase 3F8h
010 COM4 IRQ3 IObase 2E8h
011 COM3 IRQ4 IObase 3E8h
110 COM4 IRQ2 IObase 2E8h
111 COM3 IRQ5 IObase 3E8h
0Ch BYTE bit flags
bit 7: reserved
bit 6: auxiliary relay forced ON
bit 5: modem select relay forced ON
bit 4: offhook relay forced ON
bit 3: 9600 bps enabled
bit 2: 7200 bps enabled
bit 1: 4800 bps enabled
bit 0: 2400 bps enabled
0Dh BYTE reserved
0Eh WORD error count (only valid while busy, reset when idle)
10h DWORD size of nonstandard format (NSF) file in bytes
14h BYTE 'A' if Connection CoProcessor board present
15h 9 BYTEs reserved
1Eh 21 BYTEs ASCIZ CCITT identification
33h 77 BYTEs reserved
Format of status buffer for Intel SatisFAXtion board:
Offset Size Description
00h BYTE connection status flags
bit 7: busy in T.30 CCITT fax protocol
bit 6: data on current page/file (only used for block xfers)
bit 5: retransmission of last page requested
bit 4: in file transfer mode
bit 3: data in buffer
bit 2: data buffer dumped on receive
bit 1: 200x100 dpi resolution instead of 200x200 dpi
bit 0: data modem in use, FAX image modem not available
01h BYTE board state
bit 7: reserved
bit 6: handset jack active, data and FAX modems not available
bits 5-3: current bit rate
000 300 bps (V.21 HDLC)
100 2400 bps (V.27 ter)
101 4800 bps (V.27 ter)
110 7200 bps (V.29)
111 9600 bps (V.29)
bits 2-0: T.30 CCITT protocol state
000 idle
001 dialing
010 answering
011 transmitting
100 receiving
101 pre-message
110 post-message
111 disconnect
02h BYTE number of KB free in buffer
03h BYTE number of pages or files in buffer
04h BYTE number of redials remaining on current number
05h BYTE FAX page number to retransmit
06h BYTE current page/file in block transfer
07h BYTE number of rings received (only if auto-answer enabled)
08h WORD error count
0Ah DWORD length of file being transferred
0Eh 6 BYTEs reserved
14h BYTE 'B' is SatisFAXtion board present
15h 13 BYTEs ASCIZ transfer agent name
22h 5 BYTEs ASCIZ transfer agent version number
27h 13 BYTEs ASCIZ resident loader name
34h 5 BYTEs ASCIZ resident loader version number
39h 21 BYTEs ASCIZ remote CSID
4Eh 13 BYTEs ASCIZ resident manager name
5Bh 5 BYTEs ASCIZ resident manager version number
60h 32 BYTEs reserved
Note: the Intel Connection CoProcessor and SatisFAXtion may be distinguished
by examining the byte at offset 14h
----------2FCB13DL00-------------------------
INT 2F - Communicating Applications Specification - GET DIAGNOSTICS RESULTS
AX = CB13h
DL = 00h
Return: AX = 0040h in progress
>= 0 passed
< 0 hardware-dependent failure code (see below)
SeeAlso: AX=CB13h/DL=01h
Intel Connection CoProcessor failure codes:
bit 3: 9600 bps FAX modem module failed
bit 2: SDLC chip failed
bit 1: RAM failed
bit 0: ROM checksum failed
Intel SatisFAXtion failure codes:
bit 1: 2400 bps data modem failed
bit 0: 9600 bps FAX modem failed
----------2FCB13DL01-------------------------
INT 2F - Communicating Applications Specification - START DIAGNOSTICS
AX = CB13h
DL = 01h
Return: AX = 0000h successfully started
< 0 error code (see AX=CB01h)
SeeAlso: AX=CB13h/DL=00h
----------2FCB14-----------------------------
INT 2F - Communicating Applications Specification - MOVE RECEIVED FILE
AX = CB14h
BX = event handle
CX = receive file number
0001h first received file
N Nth received file
DS:DX -> ASCIZ string specifying new name for file (must not exist)
Return: AX = 0000h successful
< 0 error code (see AX=CB01h)
----------2FCB15-----------------------------
INT 2F - Communicating Applications Specification - SUBMIT FILE TO SEND
AX = CB15h
DS:DX -> variable-length data area (see below)
Return: AX >= 0 event handle
< 0 error code (see AX=CB01h)
SeeAlso: AX=CB01h
Format of data area:
Offset Size Description
00h BYTE transfer type
00h = 200x200 dpi, fax mode
01h = 100x200 dpi, fax mode
02h = file transfer mode
03h to 7Fh reserved
01h BYTE text size
00h = 80 columns
01h = 132 columns
02h to 7Fh reserved
02h WORD time to send (DOS packed time format, see INT 21/AX=5700h)
04h WORD date to send (DOS packed date format, see INT 21/AX=5700h)
06h 32 BYTEs ASCIZ destination name
26h 80 BYTEs ASCIZ name of file to send
76h 47 BYTEs ASCIZ phone number to dial
A5h 64 BYTEs ASCIZ application-specific tag string
E5h BYTE reserved (00h)
E6h BYTE cover page
00h don't send cover page
01h send cover page
02h to 7Fh reserved
E7h 23 BYTEs reserved (zeros)
FEh variable ASCIZ string containing text of cover page (if cover page flag
set to 01h)
----------2FCB16BX1234-----------------------
INT 2F - Communicating Applications Spec v1.2+ - UNLOAD RESIDENT MANAGER
AX = CB16h
BX = 1234h
CX = 5678h
DX = 9ABCh
Return: AX = 0000h successful
< 0 error code
Note: the MTEZ XpressFax CASMGR ignores the values in BX,CX, and DX
SeeAlso: AX=C000h"MTEZ",AX=CB00h
----------2FCB17-----------------------------
INT 2F - Communicating Applications Spec v1.2+ - SET COVER PAGE STATUS
AX = CB17h
BX = event handle
CL = cover page status
00h not read
01h read by user
Return: AX = 0000h successful
< 0 error code
----------2FCB80-----------------------------
INT 2F - Intel SatisFAXtion CASMGR - ???
AX = CB80h
???
Return: ???
----------2FCB81-----------------------------
INT 2F - Intel SatisFAXtion CASMGR - ???
AX = CB81h
???
Return: ???
----------2FCB82-----------------------------
INT 2F - Intel SatisFAXtion CASMGR - ???
AX = CB82h
???
Return: ???
----------2FCBDCBL56-------------------------
INT 2F - Comwave Microfax Specification - GET STATUS ARRAY
AX = CBDCh
BL = 56h
BH = line number (starts with 1)
CX:DX -> 32-byte status buffer or 80 character string
Return: AX = number of cards installed, or FFFFh on error
Program: Comwave manufacturers the Microfax line of fax cards which are a high-
performance multi-card FAX solution for OEMs.
Note: defaults to AH=CBh but can be changed
SeeAlso: AX=CBDDh,AX=DA00h
----------2FCBDDBL56-------------------------
INT 2F - Comwave Microfax Specification - COMMAND SUBMISSION
AX = CBDDh
BL = 56h
BH = ?
CX:DX -> command to execute
Return: AX = status
0000h success
FFFFh on error
SeeAlso: AH=2Ah,AX=CBDCh,AX=80FBh
----------2FCC--SI5453-----------------------
INT 2F U - Qualitas Qcach v4.00
AH = CCh
SI = 5453h or 7473h
AL = ???
DL = 00h or ???
Return: SI = 7473h
???
----------2FCD00-----------------------------
INT 2F - Intel Image Processing Interface - INSTALLATION CHECK
AX = CD00h
Return: AL = 00h not installed, OK to install
01h not installed, not OK to install
FFh installed
SeeAlso: AX=CD02h"Image"
----------2FCD00-----------------------------
INT 2F - SWELL.EXE - INSTALLATION CHECK
AX = CD00h
Return: AX = 00FFh installed
BH = major version
BL = minor version
Note: SWELL.EXE is a TSR which swaps programs to disk when they EXEC a child
process with INT 21/AH=4Bh
----------2FCD01-----------------------------
INT 2F - Intel Image Processing Interface - SET DEVICE NAME
AX = CD01h
CX:BX -> ASCIZ character device name ("LPTn", "COMn", "PRN")
Return: AL = 00h successful
CX:BX -> internal character device name
= 80h error
----------2FCD01-----------------------------
INT 2F - SWELL.EXE - SUSPEND ONCE
AX = CD01h
Return: AX = 0000h
SeeAlso: AX=CD02h"SWELL"
----------2FCD02-----------------------------
INT 2F - Intel Image Processing Interface - GET VERSION NUMBER
AX = CD02h
Return: AL = 00h/01h successful
BH = major version number (BCD)
BL = minor version number (BCD)
= 80h error
Note: if return AL = 01h, the IPI supports network redirection
SeeAlso: AX=CD00h"Image"
----------2FCD02-----------------------------
INT 2F - SWELL.EXE - SUSPEND
AX = CD02h
Return: AX = 0000h
SeeAlso: AX=CD03h"SWELL"
----------2FCD03-----------------------------
INT 2F - Intel Image Processing Interface - SELECT SCAN LINE
AX = CD03h
BX = scan line
CX = requested density in dots per inch (300, 600, or 1200)
Return: AL = 00h succesful
CX = density at which scan line was mapped
ES:DI -> start of scan line
AL = 80h unsuccessful
= 81h scan line out of range
= 82h unsupported scan line density
= 83h out of memory
SeeAlso: AX=CD04h"Image"
----------2FCD03-----------------------------
INT 2F - SWELL.EXE - ACTIVATE
AX = CD03h
Return: AX = 0000h
SeeAlso: AX=CD02h"SWELL"
----------2FCD04-----------------------------
INT 2F - Intel Image Processing Interface - MOVE BITMAP TO SCANLINE
AX = CD04h
CX:BX -> structure (see below)
Return: AL = 00h successful
= 80h unsuccessful
= 81h scan line out of range
= 82h unsupported scan line density
= 83h out of memory
= 84h unrecognized source
= 85h initialization error
SeeAlso: AX=CD03h"Image"
Format of structure:
Offset Size Description
00h WORD image source (0 = conventional memory, 1 = expanded memory)
02h DWORD pointer to image data
06h WORD scan line on which to place
08h WORD bit offset from start of scan line at which to place
0Ah WORD density of bitmap data (300, 600, or 1200 dpi)
0Ch WORD width in bits of data
0Eh WORD source logical page number
10h WORD source handle (only if source in expanded memory)
12h WORD source offset (only if source in expanded memory)
----------2FCD04-----------------------------
INT 2F - SWELL.EXE - TURN OFF VERBOSE MODE
AX = CD04h
Return: AX = 0000h
SeeAlso: AX=CD05h"SWELL"
----------2FCD05-----------------------------
INT 2F - Intel Image Processing Interface - PRINT PAGE
AX = CD05h
Return: AL = 00h successful
= 80h unsuccessful
Note: page image is retained, so multiple calls will print multiple copies of
the page
SeeAlso: AX=CD06h"Image"
----------2FCD05-----------------------------
INT 2F - SWELL.EXE - TURN ON VERBOSE MODE
AX = CD05h
Return: AX = 0000h
SeeAlso: AX=CD04h"SWELL"
----------2FCD06-----------------------------
INT 2F - Intel Image Processing Interface - CLEAR PAGE
AX = CD06h
Return: AL = 00h successful
= 80h unsuccessful
Note: palette is reset to default
SeeAlso: AX=CD09h"Image"
----------2FCD06-----------------------------
INT 2F - SWELL.EXE - UNINSTALL
AX = CD06h
Return: AX = 0000h uninstalled
= 8002h programs still swapped, not uninstalled
----------2FCD07-----------------------------
INT 2F - Intel Image Processing Interface - reserved
AX = CD07h
----------2FCD07-----------------------------
INT 2F - SWELL.EXE - GET INFO
AX = CD07h
ES:BX -> 32-byte buffer for info
Return: AX = 0000h successful
ES:BX buffer filled
= 8001h buffer wrong size
Format of info buffer:
Offset Size Description
00h WORD 20h (total size of buffer)
02h BYTE suspend-once mode active if nonzero
03h BYTE 00h active, 01h suspended
04h BYTE 00h quiet, 01h verbose
05h BYTE "Borland support" (allowing INT 21/AX=4B01h) on if nonzero
06h 26 BYTEs unused???
----------2FCD08-----------------------------
INT 2F - Intel Image Processing Interface - SCREEN IMAGE
AX = CD08h
CX:BX -> structure (see below)
Return: AL = 00h successful
= 80h unsuccessful
= 81h scan line out of range
= 82h unsupported scan line density
= 83h out of memory
= 84h unrecognized source
= 85h initialization error
SeeAlso: AX=CD05h"Image",AX=CD09h"Image"
Format of structure:
Offset Size Description
00h WORD image source (0 = conventional memory, 1 = expanded memory)
02h DWORD pointer to image data
06h WORD horizontal position on paper of left edge (in 1200 dpi units)
08h WORD vertical position on paper of top edge (in 1200 dpi units)
0Ah WORD left cropping (currently must be zero)
0Ch WORD top cropping (currently must be zero)
0Eh WORD width (currently must be 8000h)
10h WORD height (currently must be 8000h)
12h WORD horizontal size of image in 1200 dpi units
14h WORD vertical size of image in 1200 dpi units
16h WORD aspect ratio (currently reserved)
18h WORD initialization flag (if 01h, initialization is performed)
1Ah WORD pixels per line of source data
1Ch WORD number of scan lines in source data
1Eh WORD number of scan lines in packet
20h WORD bits per pixel (1,2,4,6, or 8)
22h WORD pixels per byte (1,2,4, or 8)
24h WORD compression type (currently only 00h [uncompressed] supported)
26h WORD source page number (if in expanded memory)
28h WORD source handle (if in expanded memory)
2Ah WORD source offset (if in expanded memory)
----------2FCD08-----------------------------
INT 2F - SWELL.EXE - UNUSED
AX = CD08h
Return: AX = FFFFh (error)
----------2FCD09-----------------------------
INT 2F - Intel Image Processing Interface - LOAD SCREEN
AX = CD09h
CX:BX -> structure (see below)
Return: AL = 00h successful
= 80h unsuccessful
SeeAlso: AX=CD06h"Image Processing",AX=CD0Ah"Image Processing"
Format of structure:
Offset Size Description
00h BYTE style
44h ('D') diamond style
4Ch ('L') line style
01h BYTE reserved (00h)
02h WORD frequency in lines per inch [sic]
currently, coerced to nearest of 50, 60, 68, 70, 75, 85, or 100
04h WORD screen angle in degrees (-360 to 360)
currently coerced to nearest of -45, 0, 45, or 90
----------2FCD09-----------------------------
INT 2F - SWELL.EXE - TURN OFF "BORLAND SUPPORT"
AX = CD09h
Return: AX = 0000h
SeeAlso: AX=CD0Ah"SWELL"
----------2FCD0A-----------------------------
INT 2F - Intel Image Processing Interface - LOAD PALETTE
AX = CD0Ah
CX:BX -> palette structure (see below)
Return: AL = 00h successful
= 80h unsuccessful
SeeAlso: AX=CD09h"Image Processing"
Format of palette structure:
Offset Size Description
00h BYTE bits per pixel for which palette is to be used (1,2,4,6, or 8)
01h 2**N palette translation values, one per possible pixel value
----------2FCD0A-----------------------------
INT 2F - SWELL.EXE - TURN ON "BORLAND SUPPORT"
AX = CD0Ah
Return: AX = 0000h
SeeAlso: AX=CD09h"SWELL"
----------2FCF00-----------------------------
INT 2F - TEMPLEXX - INSTALLATION CHECK
AX = CF00h
Return: AL = FFh if installed
Program: TEMPLEXX is a popup keyboard template by Henson Scientific, Inc.
Note: values in AL other than 00h cause an immediate return without modifying
any registers
----------2FD000-----------------------------
INT 2F - MDEBUG display driver - GET DRIVER STATUS
AX = D000h
Return: CF set on error
all other registers must be unchanged)
CF clear if successful
AL = FFh
AH = driver semaphor
00h driver is not active
01h driver is active
BX = CS of the driver
CX = driver version (CH = major, CL = minor, must be >= 013Ch)
DL = buffer semaphor
00h driver is not pending
01h driver is pending between functions 02h and 03h
DH = show semaphor
00h driver is not pending
01h driver is pending between functions 04h and 05h
Notes: MDEBUG is a shareware memory-resident debugging tool by Bernd Schemmer,
including a memory monitor, an interpreter and a disassembler
MDEBUG can use any two consecutive multiplex numbers between C0h and
FFh; the default is D0h for the display driver and D1h for the
command driver (see INT 60/AH=00h"MDEBUG" for the actual multiplex
numbers used)
this function MUST be reentrant, as MDEBUG calls it after every popup
before any other actions. The handler should not change any
registers if the display is in an unsupported mode or in a mode
MDEBUG supports itself, e.g. a normal text mode with at least 80x25
characters (i.e. 80x43 or 132x44 (v1.60+)). In this case MDEBUG will
not call any of the other functions for this popup session.
MDEBUG will not call the other functions if the returned version is
less than the actual version of MDEBUG.
if the driver is reentrant, DL and DH should be 00h
SeeAlso: AX=D001h,AX=D002h,AX=D003h,AX=D004h,AX=D005h
----------2FD000-----------------------------
INT 2F - ZWmous - INSTALLATION CHECK
AX = D000h
Return: AX = 5A57h ("ZW") if installed
BX = segment of resident code
Note: ZWmous is a shareware TSR by Zen Wu which permits the use of a mouse
with many non-mouse applications by entering the letter under the
mouse cursor on button presses
SeeAlso: INT 33/AX=0003h
----------2FD000-----------------------------
INT 2F - Lotus CD/Networker - INSTALLATION CHECK
AX = D000h
Return: AL = FF if CD/Networker TSR is loaded
BX = 4D44h ("MD") signature
CX = Windows mode word (from INT 2F/AX=1600h) at time of TSR load
DX = bitmap identifying all loaded CD/Networker TSRs.
Notes: INT 2F/AH=D0h is used by CD/Networker to communicate between a
resident redirector TSR and a transient program that controls the
TSR's CD-ROM drive emulation (volume attachments, caching, etc).
At present there is only one CD/Networker TSR; the bitmap always = 4.
SeeAlso: AX=D002h"Lotus",INT 2F/AX=1500h"CD-ROM"
----------2FD001-----------------------------
INT 2F - MDEBUG display driver - INITIALIZE DRIVER
AX = D001h
Return: CF set on error
AL = driver semaphor
AH = buffer semaphor
Notes: MDEBUG calls this function after every succesful call of the function
00h. The function should reset all internal data and the status of
the driver. If this function returns an error, MDEBUG will not call
the other functions in this popup session.
MDEBUG can use any two consecutive multiplex numbers between C0h and
FFh; the default is D0h for the display driver and D1h for the
command driver
SeeAlso: AX=D000h
----------2FD002-----------------------------
INT 2F - MDEBUG display driver - SAVE GRAPHIC DATA
AX = D002h
Return: CF set on error
CF clear if successful
display memory saved and display switched to one of the text modes
02h, 03h or 07h.
Note: MDEBUG calls this function only once every popup session before
displaying its windows.
SeeAlso: AX=D000h,AX=D003h
----------2FD002BX4D44-----------------------
INT 2F - Multiplex - Lotus CD/Networker GET DATA AREA
AX = D002h
BX = 4D44h
DX = bitmap identifying one loaded CD/Networker TSR
Return: ES:DI -> data area owned by TSR
Note: the format of the data area changes with each minor revision, so it
cannot be counted on
SeeAlso: AX=D000h"Lotus"
----------2FD003-----------------------------
INT 2F - MDEBUG display driver - RESTORE GRAPHIC DATA
AX = D003h
Return: CF set on error
CF clear if successful
display restored to the mode it was in before calling AX=D002h and
the display memory is restored
Note: MDEBUG calls this function only once every popup session just before
it exits to normal DOS.
SeeAlso: AX=D000h,AX=D002h
----------2FD004-----------------------------
INT 2F - MDEBUG display driver - SHOW SAVED DATA
AX = D004h
Return: CF set on error
CF clear if successful
display switched to mode it was in before calling AX=D002h and the
display memory is restored
Note: This function needn't save the display memory before changing it.
SeeAlso: AX=D000h,AX=D005h
----------2FD005-----------------------------
INT 2F - MDEBUG display driver - SWITCH BACK TO TEXT SCREEN
AX = D005h
Return: CF set on error
CF clear if successful
display restored to mode it was in before calling AX=D004h
Note: This function needn't save or change the display memory
SeeAlso: AX=D000h,AX=D004h
----------2FD0-------------------------------
INT 2F - MDEBUG display driver - RESERVED FUNCTION NUMBERS
AH = D0h
AL = 06h-7Fh
Note: these functions are reserved for future use
----------2FD0-------------------------------
INT 2F - MDEBUG display driver - USER DEFINED FUNCTION NUMBERS
AH = D0h
AL = 80h-FFh
Note: these functions numbers are reserved for user defined features (e.g.
communication between the transient und resident parts of the driver)
----------2FD100-----------------------------
INT 2F C - MDEBUG command driver - GET STATUS
AX = D100h
BX = version of MDEBUG (BH = major, BL = minor)
CX = command driver counter
---v1.60+---
DS:SI -> MDEBUG identification table (see below)
ES = segment of display memory used by MDEBUG
DI = size of video mode used by MDEBUG
(high byte = lines, low byte = columns)
Return: DL = FFh
BX = version number of the driver if it is less than the version in BX,
else unchanged
CX incremented
Notes: MDEBUG is a shareware memory-resident debugging tool by Bernd Schemmer,
including a memory monitor, an interpreter, and a disassembler
called by MDEBUG at start of popup session; if the version number
returned in BX is less than 1.52 (1.60 for MDEBUG v1.70), MDEBUG will
not call any of the other functions during this popup session
MDEBUG can use any two consecutive multiplex numbers between C0h and
FFh; the default is D0h for the display driver and D1h for the
command driver (see INT 60/AH=00h"MDEBUG" for the multiplex numbers
actually used)
this function must end with a far call to the old INT 2F handler after
changing the registers
this function MUST be reentrant
command drivers must also declare the following data at the given
offsets in the code segment
100h 3 BYTEs JMP-command in .COM-files
103h BYTE NOP-command (90h)
104h 26 BYTEs signature "Kommandotreiber für MDEBUG"
11Eh 12 BYTEs name of driver, e.g. "MDHISDRV.COM"
each driver must have a unique name
MDEBUG will pass every key and command to the command driver(s) before
checking for a valid internal command
SeeAlso: AX=D000h,AX=D101h
Format of MDEBUG identification table:
Offset Size Description
-2 WORD entry offset
00h WORD CS of MDEBUG
02h DWORD old INT 08h vector
06h DWORD old INT 09h vector
0Ah DWORD address INT 16h routine used by MDEBUG
0Eh BYTE length of version string
0Fh N BYTEs version string
----------2FD101-----------------------------
INT 2F - MDEBUG command driver - INITIALIZE DRIVER
AX = D101h
CX = command driver counter
Return: DL = FFh if successful
CX incremented
else error: all registers unchanged
Note: this function must end with a far call to the old INT 2F handler after
changing the registers
this function must be reentrant
----------2FD102-----------------------------
INT 2F - MDEBUG command driver - EXECUTE INTERPRETER COMMAND
AX = D102h
BL = first character of the interpreter command
BH = last character of the interpreter command (or blank)
DS:SI -> parameter for the interpreter command as ASCIZ string
DS:DI -> MDEBUG data structure (see below)
Return: AL = FFh
CF set on error
AH = error number
01h syntax error
02h first shell of the command.com is activ
03h esc pressed
04h break pressed
05h DOS is busy
06h command ended
07h division by zero
08h invalid display driver
09h invalid command driver
0Ah error 8 and 9
0Bh unknown error
0Ch new error
DS:SI -> ASCIZ error message (max 30 characters)
else unknown error
CF clear if successful
AH = return code
00h continue processing the command line
01h leave MDEBUG popup session
02h leave MDEBUG popup session and automatically popup again
if the InDOS flag is zero
03h not used (same as 00h)
04h not used (same as 00h)
05h put new command line into the input buffer,
DS:SI -> new command line (ASCIZ string, max 66 chars)
06h process new command line
DS:SI -> new command line (ASCIZ string, max 66 chars)
else unknown status, but continue processing commmand line
Note: this function must end with a far call to the old INT 2F handler (with
registers unchanged) if the driver does not support the interpreter
command in BX. Otherwise, the driver must not chain to the old
INT 2F.
Format of MDEBUG data structure:
Offset Size Description
00h WORD register SE
02h WORD register OF
04h WORD register FS
06h WORD register FO
08h WORD register AX
0Ah WORD register BX
0Ch WORD register CX
0Eh WORD register DX
10h WORD register SI
12h WORD register DI
14h WORD register DS
16h WORD register ES
18h WORD register BP
1Ah WORD register SS
1Ch WORD register SP
1Eh WORD register FL (flags)
20h WORD register R0
22h WORD register R1
24h WORD register R2
26h WORD register R3
28h WORD register R4
2Ah WORD register R5
2Ch WORD register R6
2Eh WORD register R7
30h WORD register R8
32h WORD register CS, return-address
34h WORD register IP, return-address
36h DWORD saved pointer to data for key <F6> (v1.60)
saved monitor address (v1.70)
3Ah 12 WORDs saved register values on last popup entry (for <F8> key)
(original register values at popup entry of MDEBUG)
AX, BX, CX, DX, SI, DI, DS, ES, BP, SS, SP, flags
52h 12 WORDs saved register values on last popup exit (for <SHIFT-F8> key)
AX, BX, CX, DX, SI, DI, DS, ES, BP, SS, SP, flags
6Ah DWORD address of the DOS-invars-table
6Eh DWORD address of the InDOS flag
72h WORD offset of the register which is used for the segment of the
first monitor window
74h WORD offset of the register which is used for the offset of the
first monitor window
76h WORD name of the register which is used for the segment of the
first monitor segment
78h WORD name of the register which is used for the offset of the first
monitor window
7Ah WORD pseudo register 1
7Ch WORD pseudo register 2
----------2FD103-----------------------------
INT 2F - MDEBUG command driver - EXECUTE KEY IN THE MONITOR
AX = D103h
BX = key code (like result of an interrupt 16h call)
CX = 0 -> the cursor is in the ASCII column of the monitor
CX = 1 -> the cursor is in one of the hex fields of the monitor
DS:SI -> MDEBUG data structure (see AX=D102h)
ES:DI -> actual byte in the monitor
Return: AL = FFh
AH = return code
00h key processed, read next key
01h leave MDEBUG popup session
02h leave MDEBUG popup session and automatically popup again if DOS
is not busy
03h signal an error (beep)
04h driver has redefined the key, proceed with the new key
BX = new key code
MDEBUG will not pass the new key to the command driver(s)
else treat like code 00h
Note: this function must end with a far call to the old INT 2F handler (with
registers unchanged) if the driver does not support the key in BX.
Otherwise, the driver must not chain to the old INT 2F.
SeeAlso: AX=D104h
----------2FD104-----------------------------
INT 2F - MDEBUG command driver - EXECUTE KEY IN THE INTERPRETER
AX = D104h
DS:SI -> MDEBUG data structure (see AX=D102h)
Return: AL = FFh
AH = return code
00h key processed, read next key
01h leave MDEBUG popup session
02h leave MDEBUG popup session and automactically popup again if
DOS is not busy
03h signal an error (beep)
04h driver has redefined the key, proceed with the new key
BX = new key code
MDEBUG won't pass the new key to the command driver(s)
05h put new command line into the input buffer
DS:SI -> new command line (ASCIZ string, max 66 chars)
06h process new command line
DS:SI -> new command line (ASCIZ string, max 66 chars)
else treat like code 00h
Note: this function must end with a far call to the old INT 2F handler if the
driver does not support the key in BX. Otherwise, the driver must
not chain to the old INT 2F.
SeeAlso: AX=D103h
----------2FD1-------------------------------
INT 2F - MDEBUG command driver - RESERVED FUNCTIONS
AH = D1h
AL = 05h-0Ah
Note: these functions are reserved for future use
----------2FD110-----------------------------
INT 2F - MDEBUG command driver - GET ADDRESS OF THE OLD INT 2F
AX = D110h
Return: DL = FFh
ES:BX -> next program in the chain for INT 2F
CX = code segment of this driver
DI = offset of driver identification table (see below) (v1.60+)
Notes: only called by the transient part of the driver
must be reentrant and the driver must not chain this function to the
old INT 2F
Format of the driver identification table:
Offset Size Description
00h 26 BYTEs signature "Kommandotreiber für MDEBUG"
^- Note: ASCII 129,German U-umlaut
27h 12 BYTEs name of driver, e.g. "MDHISDRV.COM"
each driver must have a unique name
----------2FD111-----------------------------
INT 2F - MDEBUG command driver - START DRIVER
AX = D111h
Return: DL = FFh
Notes: only called by the transient part of the driver to inform the resident
part that it is installed
the function must be reentrant and the driver mustn't chain this
function to the old INT 2F
SeeAlso: AX=D101h,AX=D112h
----------2FD112-----------------------------
INT 2F - MDEBUG command driver - END DRIVER
AX = D112h
Return: DL = FFh
Notes: only called by the transient part of the driver to inform the resident
part that it will be released after this function
the function must be reentrant and the driver mustn't chain this
function to the old INT 2F
SeeAlso: AX=D101h,AX=D111h
----------2FD1-------------------------------
INT 2F - MDEBUG command driver - RESERVED FUNCTIONS
AH = D1h
AL = 13h-7Fh
Note: these functions are reserved for future use
----------2FD1-------------------------------
INT 2F - MDEBUG command driver - USER DEFINED FUNCTIONS
AH = D1h
AL = 80h-FFh
Note: these functions are reserved for user defined features (e.g.
communication between the transient und resident parts of the driver)
----------2FD200BX5144-----------------------
INT 2F U - Quarterdeck - QEMM/QRAM/VIDRAM/MANIFEST v5.0+ - INSTALLATION CHECK
AX = D200h
BX = 5144h ("QD")
CX = 4D45h ("ME")
DX = 4D30h ("M0")
Return: AL = FFh installed
if BX,CX,DX registers were as specified on entry:
BX = 4D45h ("ME")
CX = 4D44h ("MD")
DX = 5652h ("VR")
Notes: QEMM/QRAM/VIDRAM/MANIFEST/etc will search for a free AH value from D2h
through FFh, then C0h through D1h
for AL <> 0, if the BX/CX/DX values don't match a the identifier of a
Quarterdeck product, it just chains to the previous INT 2F handler
----------2FD201BX4849-----------------------
INT 2F U - Quarterdeck - GET QD HIMEM PRESENCE
AX = D201h
BX = 4849h ("HI")
CX = 4D45h ("ME")
DX = 4D51h ("MQ")
Return: BX = 4F4Bh ("OK")
ES:DI -> HIMEM entry point
Notes: QEMM/QRAM/VIDRAM/MANIFEST will search for a free AH value from D2h
through FFh, then C0h through D1h
SeeAlso: AX=D201h/BX=5145h
----------2FD201BX4849-----------------------
INT 2F U - Quarterdeck - QEMM/QRAM v5.0+ - GET HIRAM MEMORY CHAIN
AX = D201h
BX = 4849h ("HI")
CX = 5241h ("RA")
DX = 4D30h ("M0")
Return: BX = 4F4Bh ("OK")
CX = segment of start of HIRAM chain
DX = QEMM/QRAM code segment
Notes: QEMM/QRAM/VIDRAM/MANIFEST will search for a free AH value from D2h
through FFh, then C0h through D1h
QEMM and QRAM both responded the same
the HIRAM memory chain has the same format as the regular DOS 4.0
memory chain (see INT 21/AH=52h), except that XMS Upper Memory Blocks
have the block header program name field set to "UMB"; blocks whose
"owner" field is set to the QEMM/QRAM code segment returned in DX
are locked out regions such as video memory and ROMs.
----------2FD201BX4D41-----------------------
INT 2F U - Quarterdeck - MANIFEST v1.0+ - INSTALLATION CHECK
AX = D201h
BX = 4D41h ("MA")
CX = 4E49h ("NI")
DX = 4645h ("FE")
Return: BX = 5354h ("ST")
Note: QEMM/QRAM/VIDRAM/MANIFEST will search for a free AH value from D2h
through FFh, then C0h through D1h
----------2FD201BX4D45-----------------------
INT 2F U - Quarterdeck - DVDOS4GX.DVR - ???
AX = D201h
BX = 4D45h ("ME")
CX = 5155h ("QU")
DX = 5044h ("PD")
Return: ???
Notes: AH=D2h is the default; use the Quarterdeck installation check described
under AX=D200h
called by QEMM 6.03
----------2FD201BX5145-----------------------
INT 2F U - Quarterdeck - QEMM v5.0+ - INSTALLATION CHECK
AX = D201h
BX = 5145h ("QE")
CX = 4D4Dh ("MM")
DX = 3432h ("42")
Return: BX = 4F4Bh ("OK")
ES:DI -> QEMM API entry point (see INT 67/AH=3Fh)
Notes: QEMM/QRAM/VIDRAM/MANIFEST will search for a free AH value from D2h
through FFh, then C0h through D1h
this call is not available under QEMM v6.00 unless Windows3 support
has been disabled with the NW3 switch to QEMM386.SYS
SeeAlso: AX=D201h/BX=4849h,INT 67/AH=3Fh
----------2FD201BX5649-----------------------
INT 2F U - Quarterdeck - VIDRAM v5.0+ - INSTALLATION CHECK
AX = D201h
BX = 5649h ("VI")
CX = 4452h ("DR")
DX = 414dh ("AM")
Return: BX = 4F4Bh ("OK")
ES:DI -> VIDRAM entry point
Note: QEMM/QRAM/VIDRAM/MANIFEST will search for a free AH value from D2h
through FFh, then C0h through D1h
Call VIDRAM entry point with:
AH = 00h get status
Return: AL = VIDRAM state (see below)
BL = extra RAM status
00h VIDRAM does not use extra RAM
01h VIDRAM uses EMS as extra RAM
02h VIDRAM uses EGA as extra RAM
BH = feature flags
bit 0: override enabled
bit 1: mapped memory detected in A000h-B000h range
bit 2: top of memory not at 640K
bit 3: MDA detected
bit 4: high RAM exists in video area
bit 5: mapped memory detected in video area
bits 6-7: reserved???
CL = current monitor (01h = mono, 80h = color)
SI = current top of memory (paragraph)
DI = segment of start of HiRAM chain
AH = 01h setup
AL = VIDRAM state (00h off, 01h no EGA graphics, 02h no graph)
BL = extra RAM status (see above)
BH = feature flags (see above)
CL = monitor (01h = monochrome, 80h = color)
SI = new top of memory (paragraph)
DI = segment of start of HiRAM chain
AH = 02h get end address of VIDRAM code
Return: ES:DI -> VIDRAM partial map context (see below)
Return: CF set on error
CF clear if successful
Format of partial map context (EMS 3.2):
Offset Size Description
00h BYTE EMS version ID (32h)
01h WORD EMM handle for this entry
03h BYTE number of frames
04h BYTE first page frame
05h WORD offset from ES to previously saved map
Format of partial map context (EMS 4.0):
Offset Size Description
00h BYTE EMS version ID (40h)
01h WORD mappable segment count
03h N WORD mappable segments
WORD offset to previously saved map???
----------2FD300BX4562-----------------------
INT 2F U - TeleReplica - INSTALLATION CHECK
AX = D300h
BX = 4562h
CX = 2745h
DX = serial port I/O base address??? (03F8h for v3.9)
Return: SI = segment of resident code
AX = 251Dh
BX = DF21h
CX = F321h
DX = ???
----------2FD3CB-----------------------------
INT 2F U - LapLink Quick Connect v6 - API
AX = D3CBh
CX = function
0002h get ???
Return: BX:AX -> ???
CL = ???
CH = ???
DX = ???
DI = COM1 I/O port???
SI = COM2 I/O port???
0003h initialization???
0004h ???
0005h initialization???
0006h reset/clear ???
Return: AX = 0000h
ES:DI -> next byte after ??? cleared by this call
0007h initialization???
0008h uninstall
Return: BX = status
0000h successful
FFFFh incomplete, stub remains in memory
Return: CX = 534Bh (except function 0002h)
----------2FD44D-----------------------------
INT 2F - 4DOS.COM v2.1+ - API
AX = D44Dh
BH = function
00h installation check
Return: AX = 44DDh
BL = minor version number
BH = major version number
CX = PSP segment address for current invocation
DL = 4DOS shell number (0 for the first (root) shell,
updated each time a new copy is loaded)
01h (internal, v2.1-3.03) terminate current copy of 4DOS
Return: nothing
(internal, v4.0) ???
Return: ES:BX -> data area (see below)
02h ???
DX = ???
---v2.1-3.03 only---
03h EXEC program
CX:DX -> EXEC record
FEh deallocate shell number (passed through to root shell)
???
FFh allocate shell number (passed through to root shell)
Note: bug in v3.00 will crash system if unrecognized value in BH
SeeAlso: AX=D44Eh,AX=E44Dh,INT 21/AX=4403h
Format of EXEC record:
Offset Size Description
00h WORD offset of ASCIZ program name in same segment as EXEC record
02h WORD offset of DOS commandline in same segment as EXEC record
04h WORD segment of environment for child process (see INT 21/AH=26h)
Format of 4DOS v4.0 data area:
Offset Size Description
00h 2 BYTEs ???
06h WORD XMS handle for swapping
???
----------2FD44E-----------------------------
INT 2F - 4DOS v3.0+ - AWAITING USER INPUT
AX = D44Eh
---4DOS v3.01+---
BX = 0000h 4DOS is ready to display prompt
= 0001h 4DOS has displayed the prompt, about to accept user input
Return: handler must preserve SI, DI, BP, SP, DS, ES, and SS
Note: v3.00 only makes the call corresponding to BX=0001h, does not set BX
SeeAlso: AX=D44Dh
----------2FD44FBX0000-----------------------
INT 2F - 4DOS v4.0+ - KSTACK.COM - INSTALLATION CHECK
AX = D44Fh
BX = 0000h
Return: AX = 44DDh if installed
SeeAlso: AX=D44Fh/BX=0001h
----------2FD44FBX0001-----------------------
INT 2F - 4DOS v4.0+ - KSTACK.COM - PLACE KEYSTROKES INTO KEYSTACK
AX = D44Fh
BX = 0001h
CX = number of keystrokes (01h-FFh)
DS:DX -> keystroke list (one word per keystroke)
Return: AX = status
0000h successful
nonzero failed
BX,CX,DX destroyed
Notes: the keystrokes are the exact values to return from subsequent calls to
INT 16 with AH=00h,01h,10h, or 11h, with the following exceptions:
0000h causes subfunctions 01h and 11h to indicate an empty
keyboard buffer
FFFFh is followed by a word indicating the number of clock
ticks to delay before the next faked keystroke
v4.00 KSTACK overwrites any unread keystrokes from the previous
invocation, and does not range-check CX; it will overwrite memory
following the resident portion if CX is greater than 100h.
SeeAlso: AX=D44Fh/BX=0000h,INT 16/AH=00h,INT 21/AX=4403h
----------2FD600-----------------------------
INT 2F - HEART.COM - INSTALLATION CHECK
AX = D600h
Return: AX = 0303h (two hearts) if installed
ES:DI -> buffer (see below)
Program: HEART.COM is a CPU lock-up/critical indicator utility by Mitch Davis.
Notes: Once the host program has identified the address of the data area, it
can change this to indicate safe/critical, alternate colours, etc.
The entries for the color table are in char/attrib form. Every two
entries form a pair which is alternated between 68 times a minute.
The first half of the table is for color videos, the second mono.
Within each half, the first half is for the safe chars, and the
second for the critical chars.
Format of buffer:
Offset Size Description
00h 8 WORDs table of colors/attributes (see notes above)
10h BYTE flags
bit 0: program is in critical section, so flash double
exclamation mark
bit 1: program is in safe code, so flash the heart character
11h WORD position of heartbeat on screen, normally 009Eh (last column
of second line)
----------2FD600-----------------------------
INT 2F U - VEDIT VSWAP - INSTALLATION CHECK
AX = D600h
Return: AL = D6h if installed
Note: VSWAP is the resident portion of VEDIT's "swapper" capability.
VEDIT is a programmer's text editor by Greenview Data.
SeeAlso: AX=D601h,AX=D602h
----------2FD601-----------------------------
INT 2F U - VEDIT VSWAP - ???
AX = D601h
BL = subfunction number???
Return: BL = return code ???
ES = resident portion's data??? segment
DX = resident portion's code segment
SeeAlso: AX=D600h"VSWAP"
----------2FD602-----------------------------
INT 2F U - VEDIT VSWAP - EXEC PROGRAM WITH SWAP
AX = D602h
other registers set as for INT 21/AX=4B00h
Return: CF set on error
AL = error code
82h = failure due to ???
CF clear on success
SeeAlso: AX=D600h"VSWAP",INT 21/AH=4Bh"EXEC"
----------2FD701-----------------------------
INT 2F - BANYAN VINES v4+ - GET BANV INTERRUPT NUMBER
AX = D701h
BX = 0000h
Return: AX = 0000h installed
BX = interrupt number (60h to 66h)
nonzero not present
Note: if AX is nonzero, VINES 3.x or earlier may be installed, thus it is
necessary to examine the four bytes preceding the handlers for
INT 60 through INT 66 for the string "BANV"
SeeAlso: AX=D702h,AX=D703h,AX=D704h
----------2FD702-----------------------------
INT 2F U - BANYAN VINES v4+ - PCPRINT interface
AX = D702h
BX = function
???
Return: ???
SeeAlso: AX=D701h,AX=D703h,INT 61/AX=0005h"Banyan"
----------2FD703-----------------------------
INT 2F U - BANYAN VINES v4+ - MAIL interface
AX = D703h
BX = function
???
Return: ???
SeeAlso: AX=D702h,AX=D704h
----------2FD704-----------------------------
INT 2F U - BANYAN VINES v4+ - Streettalk Directory Assistance interface
AX = D704h
BX = function
???
Return: ???
SeeAlso: AX=D703h,INT 61/AX=0007h"Banyan"
----------2FD800-----------------------------
INT 2F - Novell NetWare Lite - CLIENT.EXE - INSTALLATION CHECK
AX = D800h
Return: AL = FFh if installed
DX = version number??? (0100h in 1.00)
BX = data segment of resident copy???
ES:DI = FAR entry point for API routines
Load BX = function number and call for various
functions. Functions 00h - 10h supported in 1.00.
SeeAlso: AX=7A00h,AX=D880h
----------2FD880-----------------------------
INT 2F - Novell NetWare Lite - SERVER.EXE - INSTALLATION CHECK
AX = D880h
Return: AL = FFh if installed
DX = version number??? (0100h in 1.00)
BX = Data segment of resident copy???
CL = 01h if SERVER is active
= 00h if SERVER is disabled
SeeAlso: AX=7A00h,AX=D800h
----------2FDA00-----------------------------
INT 2F - ZyXEL ZFAX - INSTALLATION CHECK
AX = DA00h
Return: AH = enabled state (00h = enabled, 01h = disabled)
AL = 5Ah installed
Note: ZFAX is the bundled FAX software which comes with the ZyXEL model
fax modems.
SeeAlso: AX=CBDCh,AX=DA01h,AX=DA02h,AX=DA03h
----------2FDA01-----------------------------
INT 2F - ZyXEL ZFAX - UNINSTALL
AX = DA01h
Return: AL = 00h Success
01h Failure
SeeAlso: AX=DA00h
----------2FDA02-----------------------------
INT 2F - ZyXEL ZFAX - DISABLE
AX = DA02h
Return: AL = 00h
SeeAlso: AX=DA03h
----------2FDA03-----------------------------
INT 2F - ZyXEL ZFAX - ENABLE
AX = DA03h
Return: AL = 00h
SeeAlso: AX=DA02h
----------2FDA55-----------------------------
INT 2F U - TRAP.COM - INSTALLATION CHECK
AX = DA55h
DL = interrupt number
DH = ???
Return: if installed
AH = interrupt number
AL = ???
ES:BX -> ???
Notes: TRAP is an interrupt call tracer by Patrick Phillipot/Udo Chrosziel
a separate copy of TRAP is loaded for each interrupt to be traced; thus
the interrupt number is part of the installation check
----------2FDC00-----------------------------
INT 2F - GOLD.COM - INSTALLATION CHECK
AX = DC00h
Return: AL = 00h not installed
= FFh installed
Note: GOLD is a TSR by Bob Eager which makes the NumLock key return the code
for F1; the purpose is to improve Kermit's VTxxx emulation
----------2FDC01-----------------------------
INT 2F - GOLD.COM - GET STATE
AX = DC01h
Return: AL = status
00h off
01h on
SeeAlso: AX=DC00h,AX=DC02h
----------2FDC02-----------------------------
INT 2F - GOLD.COM - SET STATE
AX = DC02h
DL = new state
00h off
01h on
Return: AL = 00h (OK)
SeeAlso: AX=DC01h
----------2FDD-------------------------------
INT 2F - SoftCom programs - API
AH = DDh
AL = FEh get info
Return: ES:BX -> TSR info list (see below)
AL = program identifier
BH = function
FDh get version
Return: BX = version
FFh installation check
Return: AL = FFh if installed
BX = version
ES = segment of resident code
others vary by program
Return: AL = status
bit 7 set on error
AL = 81h unknown function
Format of TSR info list:
Offset Size Description
00h 9 BYTEs blank-padded ASCIZ program name
09h BYTE program ID
0Ah WORD program's PSP segment
0Ch WORD program version (major in high byte)
0Eh DWORD pointer to next item in info list or 0000h:0000h
12h BYTE number of interrupts hooked
13h 5 BYTEs interrupt numbers hooked by program
18h 8 BYTEs reserved
----------2FDE00BX4445-----------------------
INT 2F - DESQview v2.26+ External Device Interface - INSTALLATION CHECK
AX = DE00h
BX = 4445h ("DE")
CX = 5844h ("XD")
DX = 4931h ("I1")
Return: AL = FFh if installed (even if other registers do not match)
if BX,CX, and DX were as specified on entry,
BX = 4845h ("HE")
CX = 5245h ("RE")
DX = 4456h ("DV")
Notes: AH=DEh is the default XDI multiplex number, but may range from C0h-FFh
programs should check for XDI starting at DEh to FFh, then C0h to DDh
the XDI handler should not issue any DOS or BIOS calls, nor should it
issue DESQview API calls other than those allowed from hardware ints
SeeAlso: AX=DE02h,INT 15/AX=5400h
----------2FDE01-----------------------------
INT 2F - DESQview v2.26+ External Device Interface - DRIVER CUSTOM SUBFUNCTION
AX = DE01h
BX = driver ID
other registers as needed by driver
Notes: XDI drivers should pass this call through to previous handler if ID
does not match
DESQview never calls this function
----------2FDE01BX4450-----------------------
INT 2F U - Quarterdeck QDPMI.SYS v1.0 - INSTALLATION CHECK
AX = DE01h
BX = 4450h ("DP")
CX = 4D49h ("MI")
DX = 3039h ("09")
Return: AL = FFh if installed
BX = 4D42h ("MB")
CX = 4921h ("I!")
DX = 8F4Fh
ES:DI -> filename of DPMI host overlay
Note: the installation check consists of testing for the existence of the
character device QDPMI$$$
----------2FDE01BX5242-----------------------
INT 2F - DESQview v2.26+ XDI - CUSTOM SUBFUNCTION, Ralf Brown's XDI drivers
AX = DE01h
BX = 5242h ("RB")
CX:DX = program identifier
656F7000h ("eop",0) for DVeop
Return: AX = 5242h ("RB") if installed
ES:BX -> data or entry point
CX = version number (CH = major, CL = minor)
Call DVeop entry point with:
ES:DI -> callback address or 0000h:0000h to remove callback
Return: AX = status
0000h failed (callback table full or attempted to remove non-
existent callback)
0001h successful
ES:DI -> chaining address
BX,CX,DX destroyed
Notes: the callback function is called with a simulated interrupt when the
DESQview window containing it is closed; it should perform all
necessary cleanup and then perform a FAR jump to the chaining address
or an IRET if the chaining address is 0000h:0000h
if the program wishes to remove itself before the window is closed, it
should call the DVeop entry point with the previously returned
chaining address and ignore the returned chaining address.
----------2FDE01BX7474-----------------------
INT 2F - DESQview v2.26+ XDI - CUSTOM SUBFUNCTION, DVTXDI.COM
AX = DE01h
BX = 7474h
CL = function
00h installation check
Return: AL = FFh
01h get process handle
DX = keys on Open Window menu (DL = first, DH = second)
Return: AX = process handle or 0000h if not running
02h (v1.3+) set TMAN handle
DX = TMAN process handle
03h (v1.3+) set open keys to ignore on next CL=01h call
DX = keys on Open Window menu (DL = first, DH = second)
Return: BX = 4F4Bh ("OK")
DL destroyed
Note: DVTXDI is distributed as part of the shareware products DVTree (DOS
shell/DESQview process manager) and DVTMAN by Mike Weaver
----------2FDE01BX7575-----------------------
INT 2F - DESQview v2.26+ XDI - CUSTOM SUBFUNCTION, DVSIXDI.COM
AX = DE01h
BX = 7575h
CX = function
0000h installation check
Return: AX = 00FFh if installed
0001h turn on notification (currently unused)
Return: AX = 0001h
0002h turn off notification (currently unused)
Return: AX = 0001h
0003h get process information
Return: AX = status
0000h failed
0001h successful
BX = last instantaneous time slice
in 1/100s (v1.10)
in 1/18s (v1.11+)
CX = number of processes
DX = number of "(starting)" records (v2.00+)
SI = number of records in process info array
(v2.00+) (always 15 for v1.x)
ES:DI -> process info array (see below)
0004h get version
Return: AH = major version
AL = minor version
0005h (v1.10+) get time since DESQview started
Return: DX:AX = 1/100s since DV start (v1.10)
DX:AX = 1/18s since DV start (v1.11+)
0006h (v1.10+) get number of task switches
Return: DX:AX = total task switches
CX = task switches in last instantaneous interval
Notes: DVSIXDI is part of the DVSI (DESQview System Information) package by
Daniel J. Bodoh
for v1.00, function 0003h allocates common memory, which the caller
must deallocate after reading the process information; only the
currently used records are placed in the buffer
for v1.10+, function 0003h merely returns a pointer to the internal
array of process information; the caller should make a copy of the
array while inside a critical section (see INT 15/AX=101Bh). Only
those records with bit 7 of the first byte set are valid.
Format of information for one process (v1.00):
Offset Size Description
00h BYTE flags
bit 7: process slot is valid
01h WORD offset into DESQVIEW.DVO of program's record if started from
Open Windows menu, else undefined
03h WORD Switch Windows window number
05h WORD segment of process handle
07h WORD number of tasks owned by process
09h WORD mapping context of process
0Bh DWORD hook for other programs
Format of information for one process (v1.10-v2.00):
Offset Size Description
00h BYTE flags
bit 7: valid record
6: (v2.00+) record is allocated; if bit 7 clear, process
is "(starting)" and only offsets 01h and 09h are valid
5: (v2.00+) this app currently owns the CPU
4: reserved (0)
3: DESQview system task
2: reserved (0)
1: task has keyboard (currently unused)
0: task swapped out (currently unused)
01h WORD Open Window keys
03h WORD Switch Windows number
05h WORD segment of process handle
07h WORD number of tasks for process
09h WORD process mapping context
0Bh DWORD time process started (relative to start of DESQview)
0Fh DWORD time process last got CPU (relative to start of DESQview)
13h DWORD time process last gave up CPU (relative to start of DESQview)
17h DWORD total CPU time since process started
1Bh DWORD CPU time at start of current instantaneous interval
1Fh DWORD CPU time in current instantaneous interval
23h DWORD hook for other programs
Note: all times are in 1/100s for v1.10, in 1/18s for v1.11+
----------2FDE01BXFFFE-----------------------
INT 2F U - DESQview v2.26+ XDI - DVXMS.DVR - ???
AX = DE01h
BX = FFFEh
CX = 4D47h ("MG")
DX = 0052h (0,"R")
Return: AL = FFh
DX = 584Dh
----------2FDE02-----------------------------
INT 2F C - DESQview v2.26+ External Dev Interface - DV INITIALIZATION COMPLETE
AX = DE02h
BX = mapping context of DESQview
DX = handle of DESQview system task
Note: driver should pass this call to previous handler after doing its work
SeeAlso: AX=DE03h,AX=DE0Fh,INT 15/AX=5400h
----------2FDE03-----------------------------
INT 2F C - DESQview v2.26+ External Dev Interface - DV TERMINATION
AX = DE03h
BX = mapping context of DESQview
DX = handle of DESQview system task
Notes: driver should pass this call to previous handler before doing its work
DESQview makes this call when it is exiting, but before unhooking any
interrupt vectors
SeeAlso: AX=DE02h,AX=DE0Fh,INT 15/AX=5407h
----------2FDE04-----------------------------
INT 2F C - DESQview v2.26+ External Dev Interface - ADD PROCESS
AX = DE04h
BX = mapping context of new process
DX = handle of process
Return: nothing
Notes: XMS XDI handler (installed by default) allocates a 22-byte record
(see below) from "common" memory to control access to XMS memory
all DOS, BIOS, and DV API calls are valid in handler
driver should pass this call to previous handler after processing it
SeeAlso: AX=DE05h,AX=DE06h,INT 15/AX=5401h
Format of XMS XDI structure:
Offset Size Description
00h DWORD pointer to 10-byte record???
04h DWORD pointer to next XMS XDI structure
08h WORD mapping context
0Ah BYTE ???
0Bh 5 BYTEs XMS entry point to return for INT 2F/AX=4310h
(FAR jump to next field)
10h 6 BYTEs FAR handler for XMS driver entry point
(consists of a FAR CALL followed by RETF)
----------2FDE05-----------------------------
INT 2F C - DESQview v2.26+ External Dev Interface - REMOVE PROCESS
AX = DE05h
BX = mapping context of process
DX = handle of last task in process
Return: nothing
Notes: XMS XDI handler releases the structure allocated by AX=DE04h
driver should pass this call to previous handler before processing it
all DOS, BIOS, and DV API calls except those generating a task switch
are valid in handler
SeeAlso: AX=DE04h,AX=DE07h,INT 15/AX=5402h
----------2FDE06-----------------------------
INT 2F C - DESQview v2.26+ External Dev Interface - CREATE TASK
AX = DE06h
BX = mapping context of process containing task
DX = handle of new task
Notes: driver should pass this call to previous handler after processing it
all DOS, BIOS, and DV API calls are valid in handler
----------2FDE07-----------------------------
INT 2F C - DESQview v2.26+ External Dev Interface - TERMINATE TASK
AX = DE07h
BX = mapping context of process containing task
DX = handle of task
Notes: driver should pass this call to previous handler before processing it
all DOS, BIOS, and DV API calls except those generating a task switch
are valid in handler
SeeAlso: AX=DE04h,AX=DE06h,AX=DE10h
----------2FDE08-----------------------------
INT 2F C - DESQview v2.26+ External Dev Interface - SAVE STATE
AX = DE08h
BX = mapping context of task being switched from
DX = handle of task being switched from
Notes: invoked prior to task swap, interrupts, etc
driver should pass this call to previous handler after processing it
SeeAlso: AX=DE09h,INT 15/AX=5403h,INT 15/AX=DE27h
----------2FDE09-----------------------------
INT 2F C - DESQview v2.26+ External Dev Interface - RESTORE STATE
AX = DE09h
BX = mapping context of task being switched to
DX = handle of task being switched to
Notes: state is restored except for interrupts
driver should pass this call to previous handler before processing it
SeeAlso: AX=DE08h,INT 15/AX=5404h,INT 15/AX=DE27h
----------2FDE0A-----------------------------
INT 2F C - DESQview v2.26+ External Dev Interface - CHANGE KEYBOARD FOCUS
AX = DE0Ah
BX = mapping context of task receiving focus
DX = handle of running task
Notes: driver should pass this call to previous handler before processing it
this call often occurs inside a keyboard interrupt
SeeAlso: INT 15/AX=DE26h,INT 15/AX=DE2Fh
----------2FDE0B-----------------------------
INT 2F C - DESQview v2.26+ External Dev Interface - DVP PROCESSING COMPLETE
AX = DE0Bh
BX = mapping context of DESQview system task
CX = number of system memory paragraphs required for the use of all
XDI drivers (DV will add this to system memory in DVP buffer)
DX = handle of DESQview system task
SI = mapping context of new process if it starts
ES:DI -> DVP buffer
Return: CX incremented as needed
Notes: once DV invokes this function, the DVP buffer contents may be changed
driver should pass this call to previous handler before processing it
----------2FDE0C-----------------------------
INT 2F C - DESQview v2.26+ External Dev Interface - SWAP OUT PROCESS
AX = DE0Ch
BX = mapping context of task being swapped out
DX = handle of DESQview system task
Note: driver should pass this call to previous handler after processing it
----------2FDE0D-----------------------------
INT 2F C - DESQview v2.26+ External Dev Interface - SWAP IN PROCESS
AX = DE0Dh
BX = mapping context of process just swapped in
DX = handle of DESQview system task
Note: driver should pass this call to previous handler before processing it
----------2FDE0E-----------------------------
INT 2F C - DESQview v2.26+ External Dev Interface - DVP START FAILED
AX = DE0Eh
BX = mapping context of DESQview system task
DX = handle of DESQview system task
SI = mapping context of failed process (same as for call to AX=DE0Bh)
Note: driver should pass this call to previous handler after processing it
----------2FDE0F-----------------------------
INT 2F C - DESQview v2.50+ External Dev Interface - INITIALIZE DV
AX = DE0Fh
Note: DESQview 2.50+ calls this function just before it completes its
initialization. At the time of the call, DESQview has not yet
changed any interrupt vectors
SeeAlso: AX=DE02h
----------2FDE10-----------------------------
INT 2F C - DESQview v2.50+ External Dev Interface - FREE TASK
AX = DE10h
BX = mapping context of process
DX = task handle of process
Note: DESQview 2.50+ calls this function before it frees the task; it is
similar to AX=DE07h but allows the XDI handler to make calls which
cause context switches
SeeAlso: AX=DE06h,AX=DE07h
----------2FDF00-----------------------------
INT 2F - HyperWare programs - INSTALLATION CHECK
AX = DF00h
BX = product code
4248h ('BH') HyperStb
4448h ('DH') HyperDisk v4.20+
4B48h ('KH') HyperKey
5348h ('SH') HyperScreen
CX = 0000h
DX = 0000h
Return: AL = status
00h not installed
FFh multiplex number in use
CX = 5948h ('YH') if selected product installed
---HyperDisk---
BX = code segment of resident portion
DX = HyperDisk local data version
Program: HyperDisk is a shareware disk cache by HyperWare (Roger Cross)
Note: AH=DFh is the default; if it is already in use by some other program,
HyperWare programs then scan multiplex numbers from C0h through FFh
SeeAlso: INT 13/AX=8EEDh
---------------------------------------------
INT 2F - HyperDisk v4.50+ - GET CURRENT CACHE STATE
AX = DF01h
BX = 4448h ('DH')
Return: AX = 0000h if function supported
BX = number of cache buffers in use
CX = number of cache buffers which have been modified
DL = caching flags (see below)
Note: AH=DFh is the default; if it is already in use by some other program,
HyperWare programs then scan multiplex numbers from C0h through FFh
SeeAlso: AX=DF00h,AX=DF02h
Bitmask of caching flags:
bit 0: staged writes enabled for floppy disks
bit 1: staged writes enabled for hard disks
bit 2: writes verified on floppy disks
bit 3: writes verified on hard disks
bit 4: reserved (0)
bit 5: reserved (0)
bit 6: floppy caching enabled
bit 7: all caching functions enabled
---------------------------------------------
INT 2F - HyperDisk v4.50+ - SET CACHE STATE
AX = DF02h
BX = 4448h ('DH')
DL = new caching flags (see AX=DF01h)
Return: AX = 0000h if supported
BX = number of cache buffers in use
CX = number of cache buffers which have been modified
DL = previous caching flags (see AX=DF01h)
Program: HyperDisk is a shareware disk cache by HyperWare (Roger Cross)
Note: AH=DFh is the default; if it is already in use by some other program,
HyperWare programs then scan multiplex numbers from C0h through FFh
SeeAlso: AX=DF00h,AX=DF01h
----------2FE000-----------------------------
INT 2F - SETDRVER.COM v2.10+ - INSTALLATION CHECK
AX = E000h
Return: AX = 4A52h ("JR") if present
Program: SETDRVER is a public domain TSR by Jacob Rieper which sets the
apparent DOS version analogously to MSDOS SETVER
Note: this installation check differs from the usual one of returning AL=FFh
SeeAlso: AX=E001h,INT 21/AH=52h
----------2FE001-----------------------------
INT 2F - SETDRVER.COM v2.10+ - GET SETDRVER VERSION
AX = E001h
Return: AH = major version
AL = minor version
SeeAlso: AX=E000h
----------2FE002-----------------------------
INT 2F - SETDRVER.COM v2.10+ - GET ORIGINAL DOS VERSION INFO
AX = E002h
Return: AL = FFh if successful
BH = major DOS version
BL = minor DOS version
CH = DOS version flag
CL = OEM number
DH = major DR-DOS version number (FFh if unknown)
DL = minor DR-DOS version number (FFh if unknown)
SeeAlso: AX=E003h,AX=E007h,INT 21/AH=30h
----------2FE003-----------------------------
INT 2F - SETDRVER.COM v2.10+ - RESET INTERNAL VARIABLES
AX = E003h
BH = new major DOS version
BL = new minor DOS version
CH = new DOS version flag
CL = new DOS revision number
DH = new OEM number
SeeAlso: AX=E002h
----------2FE004-----------------------------
INT 2F - SETDRVER.COM v2.10+ - ENABLE TSR
AX = E004h
Return: AL = FFh if successful
SeeAlso: AX=E000h,AX=E005h,AX=E006h
----------2FE005-----------------------------
INT 2F - SETDRVER.COM v2.10+ - DISABLE TSR
AX = E005h
Return: AL = FFh if successful
SeeAlso: AX=E000h,AX=E004h,AX=E006h
----------2FE006-----------------------------
INT 2F - SETDRVER.COM v2.10+ - GET TSR STATUS
AX = E006h
Return: AL = FFh if successful
BL = status
01h resident and active
02h resident and inactive
----------2FE007-----------------------------
INT 2F - SETDRVER.COM v2.10+ - GET TaskMAX STATUS AT INSTALLATION
AX = E007h
Return: AL = FFh if successful
BL = status
00h if TaskMAX not loaded before SETDRVER
FFh if TaskMAX was loaded before SETDRVER
SeeAlso: AX=E003h
----------2FE0-------------------------------
INT 2F - SETDRVER.COM - RESERVED FOR FUTURE USE
AH = E0h
AL = 08h-10h
----------2FE300-----------------------------
INT 2F - ANARKEY.COM - INSTALLATION CHECK
AX = E300h
Return: AL = 00h not installed
FEh if installed but suspended (v3.0+)
FFh installed
Notes: ANARKEY.COM is a commandline recall program by Steven Calwas
E3h is the default function number, but can be set to any value from
C0h to FFh
SeeAlso: AX=E301h,AX=E302h,AX=E303h,AX=E304h,AX=E305h,AX=E306h,AX=E307h
----------2FE301-----------------------------
INT 2F U - ANARKEY.COM v2+ - GET ???
AX = E301h
Return: DX:BX -> ???
SeeAlso: AX=E300h
Format of returned data structure for ANARKEY v2.0:
Offset Size Description
-7 7 BYTEs signature ('ANARKEY')
00h WORD ??? (I see 0001h in v2.0)
02h WORD ??? (I see 0001h in v2.0)
04h WORD ??? (I see 0 in v2.0)
06h WORD PSP segment of next program loaded
Format of returned data structure for ANARKEY v3+:
Offset Size Description
-1 BYTE multiplex number
00h WORD ??? (I see 0001h in v3.0-4.0)
02h WORD ??? (I see 0001h in v3.0-4.0)
04h BYTE ??? (I see 0 in v3.0-4.0)
05h WORD PSP segment of next program loaded
----------2FE302-----------------------------
INT 2F U - ANARKEY.COM v3+ - ???
AX = E302h
BL = ???
Return: ???
SeeAlso: AX=E300h
----------2FE303-----------------------------
INT 2F U - ANARKEY.COM v3+ - ANARKMD API
AX = E303h
BL = function
01h toggle insert mode
02h display contents of history buffer
03h write history buffer to file
ES:DX -> file name
04h clear history buffer
05h undefine all aliases
06h show aliases
07h list programs using Unix switchar
08h jump to bottom of history buffer
09h (v4.0) add string to history buffer
ES:DX -> ASCIZ string
0Ah (v4.0) ???
ES:DX -> ???
0Bh (v4.0) copy string to edit buffer for use as next input line
ES:DX -> ASCIZ string
0Ch (v4.0) ???
0Dh (v4.0) copy ??? to ???
0Eh (v4.0) ???
0Fh (v4.0) ???
10h (v4.0) set ??? flag
11h (v4.0) display error message about running in EMS under Windows
Return: ???
SeeAlso: AX=E300h
----------2FE304-----------------------------
INT 2F U - ANARKEY.COM v2+ - ???
AX = E304h
BL = ???
Return: ???
SeeAlso: AX=E300h
----------2FE305-----------------------------
INT 2F U - ANARKEY.COM v3+ - ENABLE/SUSPEND ANARKEY
AX = E305h
BL = new state
01h suspended
00h enabled
SeeAlso: AX=E300h
----------2FE306-----------------------------
INT 2F U - ANARKEY.COM v4.0 - GET ???
AX = E306h
Return: AX = ???
SeeAlso: AX=E300h
----------2FE307-----------------------------
INT 2F U - ANARKEY.COM v4.0 - GET ???
AX = E307h
Return: AX = ???
BL = ???
SeeAlso: AX=E300h
----------2FE44D-----------------------------
INT 2F - NDOS - API
AX = E44Dh
Note: as NDOS is a licensed version of 4DOS v3.03, the API is identical to
that for 4DOS, except that AH=E4h instead of D4h and the installation
check returns AX=44EEh instead of AX=44DDh
SeeAlso: AX=D44Dh,AX=E44Eh
----------2FE44EBX0000-----------------------
INT 2F - NDOS - AWAITING USER INPUT
AX = E44Eh
BX = 0000h NDOS is ready to display prompt
= 0001h NDOS has displayed the prompt, about to accept user input
Return: handler must preserve SI, DI, BP, SP, DS, ES, and SS
SeeAlso: AX=E44Dh
----------2FED00-----------------------------
INT 2F - Phar Lap DOS EXTENDERS - INSTALLATION CHECK
AX = ED00h
BL = DOS extender
01h 286dosx v1.3+ (Software Development Kit)
02h 286dosx v1.3+ (Run-Time Kit)
03h 386dosx v4.0+ (SDK)
04h 386dosx v4.0+ (RTK)
Return: AL = status
00h not installed
FFh installed
SI = 5048h ("PH")
DI = 4152h ("AR")
CH = major version number
CL = minor version number
DX = flags
bit 0: running under DPMI
1: running under Phar Lap VMM
SeeAlso: AH=A1h,AX=F100h,AX=FBA1h
----------2FED80-----------------------------
INT 2F - Phar Lap 286|DOS Extender Lite v2.5 - ???
AX = ED80h
BL = DOS extender ID (see AX=ED00h)
SI = 5048h ("PH")
DI = 4152h ("AR")
???
Return: ???
----------2FEE00-----------------------------
INT 2F - GRIDLOC.EXE - INSTALLATION CHECK
AX = EE00h
Return: AL = FFh if installed
Note: GRIDLOC is a PC security program by Intelligent Security Systems, Inc.
----------2FF000-----------------------------
INT 2F U - 4MAP - INSTALLATION CHECK
AX = F000h
Return: AX = 00FFh
Notes: returns AX=00FFh for any value of AL not listed here
4MAP is a keybinding program for 4DOS (see AX=D44Dh) by Ho-Ping Tseng
----------2FF001-----------------------------
INT 2F U - 4MAP - GET KEY MAPPINGS
AX = F001h
Return: ES:BX -> key mappings
SeeAlso: AX=F000h
----------2FF002-----------------------------
INT 2F U - 4MAP - INSERT CHARACTER INTO ???
AX = F002h
BL = character to insert
Return: AX = status
0000h successful
0001h buffer full
SeeAlso: AX=F000h,AX=F003h
----------2FF003-----------------------------
INT 2F U - 4MAP - INSERT CHARACTER INTO ???
AX = F003h
BL = character to insert
Return: AX = status
0000h successful
0001h buffer full
SeeAlso: AX=F000h,AX=F002h
----------2FF1-------------------------------
INT 2F U - MIN-MEM v2.11 - INSTALLATION CHECK
AH = F1h
AL <> F1h
Return: AL = F1h if installed
Note: MIN-MEM is a shareware TSR manager by Biologic which permits up to 24
popup TSRs to be loaded but swapped out to disk, EMS, or XMS. One
TSR at a time is brought back into memory at the user's request.
----------2FF100-----------------------------
INT 2F - DOS EXTENDER INSTALLATION CHECK
AX = F100h
Return: AL = FFh if DOS extender present
SI = 444Fh ("DO")
DI = 5358h ("SX")
Note: supported or soon to be supported by Phar Lap, Rational, Ergo, and IGC
SeeAlso: AH=A1h,AX=ED00h,AX=FBA1h/BX=0081h,INT 15/AX=BF02h
----------2FF700-----------------------------
INT 2F - AUTOPARK.COM - INSTALLATION CHECK
AX = F700h
Return: AL = 00h not installed
FFh installed
Note: AUTOPARK.COM is a resident hard disk parker by Alan D. Jones
----------2FF701-----------------------------
INT 2F - AUTOPARK.COM - SET PARKING DELAY
AX = F701h
BX:CX = 32-bit count of 55ms timer ticks
----------2FF800CX4455-----------------------
INT 2F U - SuperStor PRO 2XON.COM - INSTALLATION CHECK
AX = F800h
CX = 4455h ("DU")
DL = 45h ("E")
Return: AL = FFh if installed
ES:BX -> ASCII signature "Universal Data Exchange"
Program: SuperStor is a disk-compression program by Addstor.
Note: returns AX=0001h if AL is not 00h or 01h
SeeAlso: AX=1001h,AX=F801h
----------2FF801CX4455-----------------------
INT 2F U - SuperStor PRO 2XON.COM - UNINSTALL
AX = F801h
CX = 4455h ("DU")
DL = 45h ("E")
ES:BX = return address if successful
Return: at specified address if successfully removed from memory
else
AL = error code
???
Program: SuperStor is a disk-compression program by Addstor.
Note: returns AX=0001h if AL is not 00h or 01h
SeeAlso: AX=1001h,AX=F800h
----------2FFB-------------------------------
INT 2F - Multiplex - RESERVED BY BORLAND INTERNATIONAL
AH = FBh
----------2FFB00-----------------------------
INT 2F U - AutoBraille v1.1A - INSTALLATION CHECK
AX = FB00h
Return: AX = 00FFh if installed
Note: AutoBraille is a shareware text-to-braille converter by KANSYS, Inc.
SeeAlso: INT 10/AH=38h,INT 14/AX=F0F1h
----------2FFB00-----------------------------
INT 2F U - Jot-It! v1.50 - INSTALLATION CHECK
AX = FB00h
Return: AX = FFFFh if installed
BX = version (BCD, BH=major, BL=minor)
SeeAlso: AX=FB03h"Jot-It",AX=FB01h"Jot-It"
----------2FFB01-----------------------------
INT 2F U - AutoBraille v1.1A - ???
AX = FB01h
???
Return: ???
----------2FFB01-----------------------------
INT 2F U - Jot-It! v1.50 - GET USER NAME
AX = FB01h
Return: DX:BX -> ASCIZ user name
SeeAlso: AX=FB02h"Jot-It"
----------2FFB02-----------------------------
INT 2F U - AutoBraille v1.1A - ???
AX = FB02h
Return: AH = ???
AL = ???
----------2FFB02-----------------------------
INT 2F U - Jot-It! v1.50 - GET MESSAGE DIRECTORY
AX = FB02h
Return: DX:BX -> ASCIZ name of directory in which messages are stored
SeeAlso: AX=FB01h"Jot-It"
----------2FFB03-----------------------------
INT 2F U - AutoBraille v1.1A - GET NEXT ???
AX = FB03h
Return: AX = ???
----------2FFB03-----------------------------
INT 2F U - Jot-It! v1.50 - UNINSTALL
AX = FB03h
Return: resident code removed from memory
Note: CAUTION: NO checks are performed to ensure that the interrupt vectors
being unhooked (08h,09h,28h,2Fh) actually point at the Jot-It! code
SeeAlso: AX=FB00h"Jot-It"
----------2FFB-------------------------------
INT 2F U - AutoBraille v1.1A - SET ???
AH = FBh
AL = 04h-08h
Return: AX = 0000h
----------2FFB-------------------------------
INT 2F U - AutoBraille v1.1A - SET ???
AH = FBh
AL = 09h-0Fh (???, 0Eh = COM1, 0Fh = COM2)
Return: ???
Note: AutoBraille is a shareware text-to-braille converter by KANSYS, Inc.
----------2FFB-------------------------------
INT 2F U - AutoBraille v1.1A - SET ???
AH = FBh
AL = 10h-1Fh
???
Return: ???
----------2FFB20-----------------------------
INT 2F U - AutoBraille v1.1A - SET ??? FLAGS
AX = FB20h
BL = flags to set
SeeAlso: AX=FB21h"AutoBraille"
----------2FFB21-----------------------------
INT 2F U - AutoBraille v1.1A - CLEAR ??? FLAGS
AX = FB21h
BL = flags to clear
SeeAlso: AX=FB20h"AutoBraille"
----------2FFB22-----------------------------
INT 2F U - AutoBraille v1.1A - SET ???
AX = FB22h
BL = ???
Note: AutoBraille is a shareware text-to-braille converter by KANSYS, Inc.
----------2FFB28-----------------------------
INT 2F U - AutoBraille v1.1A - ???
AX = FB28h
BX = ???
???
Return: ???
SeeAlso: AX=FB29h"AutoBraille"
----------2FFB29-----------------------------
INT 2F U - AutoBraille v1.1A - ???
AX = FB29h
BX = ???
???
Return: ???
SeeAlso: AX=FB28h"AutoBraille"
----------2FFB-------------------------------
INT 2F U - AutoBraille v1.1A - SET ???
AH = FBh
AL = 2Bh-34h
BX = ???
----------2FFB35-----------------------------
INT 2F U - AutoBraille v1.1A - SET ???
AX = FB35h
BL = ???
----------2FFB36-----------------------------
INT 2F U - AutoBraille v1.1A - SET ???
AX = FB36h
BL = ???
----------2FFB37-----------------------------
INT 2F U - AutoBraille v1.1A - SET ???
AX = FB37h
BL = ???
Note: AutoBraille is a shareware text-to-braille converter by KANSYS, Inc.
----------2FFB42BX0001-----------------------
INT 2F PU - Borland C++ DPMILOAD.EXE - INSTALLATION CHECK???
AX = FB42h
BX = 0001h
Return: AX = version number??? (AL=major, AH=minor)
CX = next-selector increment
---BC2.0---
ES:BX -> 80-byte buffer for ???
DX = DPMI version
---BC3.0---
BX = ??? (0000h)
DX = ???
ES:SI -> list of valid selectors ???
Notes: The version of DPMILOAD distributed with BC++ v2.0 identifies itself
as version 1.000, while the version distributed with BC++ 3.0
identifies itself as version 1.0; the former is 10864 bytes, the
latter 22180 bytes. The BC2.0 version is a DPMI loader, while
the BC3.0 version also adds a DPMI host and DOS extender
the BC++ 2.0 version displays an error message if called with BX
values other than 0001h-0008h
----------2FFB42BX0002-----------------------
INT 2F PU - Borland C++ 2.0 DPMILOAD.EXE - ALLOCATE MEMORY
AX = FB42h
BX = 0002h
CX = size in bytes
DX = bit flags
bit 2: set to allocate DOS memory, clear for DPMI memory
SI = selector of descriptor to be modified to access allocated memory
DI = selector of a second descriptor to be modified
Return: AX = ??? or 0000h on error
CX:DX = linear base address of DPMI memory block
SI:DI = handle for DPMI memory block or FFFFh:FFFFh
???
Note: two segment descriptors may be set if a code and an aliased data
segment are required; if only one descriptor is needed, SI should
equal DI on entry
BUG: when allocating DOS memory, the code computes the linear address by
multiplying the segment number by 4 rather than shifting by 4
SeeAlso: AX=FB42h/BX=0003h,AX=FB42h/BX=0008h
----------2FFB42BX0002-----------------------
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ALLOCATE MEMORY
AX = FB42h
BX = 0002h
ES:SI -> memory block info (see below)
Return: ???
Note: The version of DPMILOAD distributed with BC++ v2.0 identifies itself
as version 1.000, while the version distributed with BC++ 3.0
identifies itself as version 1.0; the former is 10864 bytes, the
latter 22180 bytes.
SeeAlso: AX=FB42h/BX=0003h,AX=FB42h/BX=0008h
Format of memory block info:
Offset Size Description
00h WORD flags
bit 0: set if data segment rather than code segment
bit 1: information valid
bit 2: set if DOS memory block rather than DPMI memory block
bit 4: ???
bit 15: set if no LDT selectors for memory block???
02h DWORD block size in bytes
---DPMI memory block---
06h DWORD DPMI memory block handle
---DOS memory block---
06h WORD real-mode segment of memory block
08h WORD selector of memory block
---
0Ah DWORD linear address of memory
0Eh WORD memory operation error code
0008h no more free LDT descriptors
---if flags bit 0 clear---
10h WORD code segment selector for memory block or 0000h or FFFFh
12h WORD data alias selector for memory block or 0000h or FFFFh
---if flags bit 0 set---
10h WORD data segment selector for memory block or 0000h or FFFFh
12h WORD unused???
----------2FFB42BX0003-----------------------
INT 2F PU - Borland C++ DPMILOAD.EXE - GET AVAILABLE MEMORY
AX = FB42h
BX = 0003h
Return: DX:AX = size of largest free block in paragraphs
0000h:0000h on error (BC3.0 version only)
Note: AX and DX are destroyed on error, but no other error indicator is
returned, under the BC++ 2.0 version of DPMILOAD
SeeAlso: AX=FB42h/BX=0002h
----------2FFB42BX0004-----------------------
INT 2F PU - Borland C++ DPMILOAD.EXE - LOAD PROTECTED-MODE EXECUTABLE???
AX = FB42h
BX = 0004h
DS:DX -> ASCIZ filename of protected-mode executable
Return: CX = selector of ??? or 0000h
---BC3.0---
DX = status (0000h,FFF4h,others???) (see below)
Note: the filename may also be terminated by a CR rather than a NUL under the
BC++ 3.0 version of DPMILOAD
Values for status:
0000h successful
0001h ??? failure
0002h invalid selector
0004h unknown error
0008h no more LDT descriptors available???
FFDEh unable to set descriptor
FFDFh unable to get segment base address
FFE0h ???
FFF2h invalid parameter value
FFF4h component of filename too long (name not in 8.3 format)
FFF5h pathname too long (>79 chars)
FFF6h ???
FFF8h ???
FFF9h index out of range
FFFAh ???
FFFCh invalid access to code segment???
FFFEh ???
FFFFh general error
----------2FFB42BX0005-----------------------
INT 2F PU - Borland C++ DPMILOAD.EXE - GET ADDRESS OF ??? BY NAME
AX = FB42h
BX = 0005h
CX = selector of DPMILOAD data (see below)
DS:DX -> ASCIZ or CR-terminated name of ??? (case ignored)
Return: DX = status (see AX=FB42h/BX=0004h)
0000h successful
AX:BX -> ??? FAR function (called with two words on top of stk)
else
BX destroyed
SeeAlso: AX=FB42h/BX=0006h,AX=FB42h/BX=000Eh
Format of DPMILOAD data:
Offset Size Description
00h 12 BYTEs ???
0Ch WORD ??? bit flags
0Eh 14 BYTEs ???
1Ch WORD number of memory control records
1Eh 25 BYTEs ???
37h BYTE ??? bit flags
bit 4: data valid???
38h 4 BYTEs ???
3Ch WORD ???
3Eh 12 BYTEs ???
46h BYTE ??? counter
47h BYTE ???
48h BYTE ???
49h BYTE ???
4Ah WORD ???
4Ch 2 BYTEs ???
4Eh WORD offset of array of 64-byte memory control records
52h WORD offset of name list (see below)
54h 4 BYTEs ???
58h WORD offset of array of 6-byte objects
5Ah 8 BYTEs ???
62h 9 BYTEs ASCIZ name for ???
6Bh 9 BYTEs ASCIZ name for ???
???
Format of name list entry [array]:
Offset Size Description
00h BYTE length of name (00h if end of array)
01h N BYTEs name
N+1 WORD 1-based index into array of unknown 6-byte objects
Format of 6-byte objects:
Offset Size Description
00h BYTE ???
01h BYTE ???
02h BYTE ???
03h BYTE 1-based index of memory control record
04h WORD ???
Format of memory control record:
Offset Size Description
00h 20 BYTEs memory block info (see AX=FB42h/BX=0002h)
14h 6 BYTEs ???
1Ah BYTE ???
1Bh 2 BYTEs ???
1Dh BYTE ??? bit flags
1Eh 14 BYTEs ???
2Ch DWORD pointer to ??? memory control record or 0000h:0000h
30h DWORD pointer to ??? memory control record or 0000h:0000h
34h DWORD pointer to next??? memory control record or 0000h:0000h
38h DWORD pointer to prev??? memory control record or 0000h:0000h
3Ch 4 BYTEs ???
Note: the pointers at offsets 2Ch and 30h form a doubly-linked list, as do
the pointers at offsets 34h and 38h
----------2FFB42BX0006-----------------------
INT 2F PU - Borland C++ DPMILOAD.EXE - GET ADDRESS OF ??? BY NUMBER
AX = FB42h
BX = 0006h
CX = selector of DPMILOAD data (see AX=FB42h/BX=0005h)
DX = 1-based index into array of ??? 6-byte objects
Return: DX = status (see AX=FB42h/BX=0004h)
0000h successful
AX:BX -> ??? FAR function (called with two words on top of stk)
else
BX destroyed
SeeAlso: AX=FB42h/BX=0005h,AX=FB42h/BX=000Eh
----------2FFB42BX0007-----------------------
INT 2F PU - Borland C++ 2.0 DPMILOAD.EXE - ???
AX = FB42h
BX = 0007h
CX = selector of ???
Return: ???
Note: The version of DPMILOAD distributed with BC++ v2.0 identifies itself
as version 1.000, while the version distributed with BC++ 3.0
identifies itself as version 1.0; the former is 10864 bytes, the
latter 22180 bytes.
----------2FFB42BX0007-----------------------
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
AX = FB42h
BX = 0007h
CX = selector of DPMILOAD data (see AX=FB42h/BX=0005h)
???
Return: DX = status (see AX=FB42h/BX=0004h)
0000h successful
AX = ???
----------2FFB42BX0008-----------------------
INT 2F PU - Borland C++ 2.0 DPMILOAD.EXE - FREE MEMORY BLOCK
AX = FB42h
BX = 0008h
CX = bit flags
bit 2: set if DPMI memory, clear if DOS memory
DX = selector of DOS memory block
SI:DI = handle of DPMI memory block
Return: DX = 0000h on error, unchanged if succcessful
Note: The version of DPMILOAD distributed with BC++ v2.0 identifies itself
as version 1.000, while the version distributed with BC++ 3.0
identifies itself as version 1.0; the former is 10864 bytes, the
latter 22180 bytes.
SeeAlso: AX=FB42h/BX=0002h
----------2FFB42BX0008-----------------------
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - FREE MEMORY BLOCK
AX = FB42h
BX = 0008h
ES:SI -> memory block info (see AX=FB42h/BX=0002h"3.0")
Return: ???
SeeAlso: AX=FB42h/BX=0009h
----------2FFB42BX0009-----------------------
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - RESIZE MEMORY BLOCK
AX = FB42h
BX = 0009h
ES:SI -> memory block info (see AX=FB42h/BX=0002h"3.0")
???
Return: ???
SeeAlso: AX=FB42h/BX=0008h"3.0"
----------2FFB42BX000A-----------------------
INT 2F RU - Borland C++ 3.0 DPMILOAD.EXE - INIT DPMI HOST AND SPAWN SUBSHELL
AX = FB42h
BX = 000Ah
CX = 0001h
DX = ???
SI = ???
Return: after user exits subshell
Notes: this call is used by DPMIRES; unlike most of the DPMILOAD calls, this
function is not available in protected mode.
the BC2.0 version of DPMILOAD is purely a DPMI loader, while the BC3.0
version also adds a DPMI host and DOS extender.
SeeAlso: AX=FB42h/BX=0004h,AX=FB42h/BX=0015h
----------2FFB42BX000B-----------------------
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - UNUSED
AX = FB42h
BX = 000Bh
----------2FFB42BX000C-----------------------
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - FREE DESCRIPTORS FOR MEMORY BLOCK???
AX = FB42h
BX = 000Ch ???
ES:SI -> memory block info ??? (see AX=FB42h/BX=0002h"3.0")
Return: DX = status???
SeeAlso: AX=FB42h/BX=000Fh
----------2FFB42BX000D-----------------------
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - SIMULATE REAL MODE INTERRUPT
AX = FB42h
BX = 000Dh
CX = number of words to copy from protected-mode to real mode stack
DL = interrupt number
DH = flags
bit 0: reset the interrupt controller and A20 line
ES:DI -> real-mode call structure (see INT 31/AX=0300h)
Return: CX = status
0000h successful
0001h failed
SeeAlso: INT 31/AX=0300h
----------2FFB42BX000E-----------------------
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET ADDRESS OF ???
AX = FB42h
BX = 000Eh
DS:DX -> ASCIZ or CR-terminated name of ???
Return: CX = selector of DPMILOAD data (see AX=FB42h/BX=0005h) corresponding to
name, 0000h on error
SeeAlso: AX=FB42h/BX=0006h,AX=FB42h/BX=001Fh
----------2FFB42BX000F-----------------------
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - REALLOCATE LDT DESCRPS TO MEMBLK???
AX = FB42h
BX = 000Fh
ES:SI -> memory block info (see AX=FB42h/BX=0002h"3.0")
Return: ???
SeeAlso: AX=FB42h/BX=000Ch
----------2FFB42BX0010-----------------------
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - CONVERT SEGMENT TO SELECTOR
AX = FB42h
BX = 0010h
DX = segment number
Return: CX = status (see also AX=FB42h/BX=0004h)
0000h successful
DX = selector number for descriptor
0008h failed
SeeAlso: AX=FB42h/BX=0023h
----------2FFB42BX0011-----------------------
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
AX = FB42h
BX = 0011h
CX = selector of DPMILOAD data (see AX=FB42h/BX=0005h)
???
Return: DX = status (see also AX=FB42h/BX=0004h)
0000h successful
AX:BX -> ??? name
0002h invalid selector
FFFEh ??? error
----------2FFB42BX0012-----------------------
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
AX = FB42h
BX = 0012h
CX = selector for ???
Return: CX = selector for ???
----------2FFB42BX0013-----------------------
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
AX = FB42h
BX = 0013h
CX = selector of DPMILOAD data (see AX=FB42h/BX=0005h)
DX = 1-based index of ???
Return: CX = status (see also AX=FB42h/BX=0004h)
0000h successful
BX = ??? or 0000h
0002h invalid selector
FFF9h ??? error
----------2FFB42BX0014-----------------------
INT 2F RU - Borland C++ 3.0 DPMILOAD.EXE - ???
AX = FB42h
BX = 0014h ???
CX = 0001h
Return: BX = 0000h
Note: unlike most of the DPMILOAD functions, this call is available only in
real or V86 mode
SeeAlso: AX=FB42h/BX=000Ah
----------2FFB42BX0015-----------------------
INT 2F RU - Borland C++ 3.0 DPMILOAD.EXE - ???
AX = FB42h
BX = 0015h uninstall
CX = 0001h
Return: ???
Note: unlike most of the DPMILOAD functions, this call is available only in
real or V86 mode
SeeAlso: AX=FB42h/BX=000Ah
----------2FFB42BX0016-----------------------
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET ???
AX = FB42h
BX = 0016h
CX = selector of DPMILOAD data (see AX=FB42h/BX=0005h)
Return: DX = status (see also AX=FB42h/BX=0004h)
0000h successful
CX = ???
----------2FFB42BX0017-----------------------
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
AX = FB42h
BX = 0017h
CX = ???
DX = ???
???
Return: DX = status (0000h,0001h) (see below)
----------2FFB42BX0018-----------------------
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - SET ???
AX = FB42h
BX = 0018h
CX = ???
----------2FFB42BX0019-----------------------
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
AX = FB42h
BX = 0019h
CX = selector for ???
???
Return: DX = status (see also AX=FB42h/BX=0004h)
0000h successful
CX = selector for ???
----------2FFB42BX001A-----------------------
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
AX = FB42h
BX = 001Ah
CX = selector for ???
???
Return: DX = status (see also AX=FB42h/BX=0004h)
0000h successful
0004h failed
CX:BX -> ???
----------2FFB42BX001B-----------------------
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
AX = FB42h
BX = 001Bh
CX = selector of DPMILOAD data (see AX=FB42h/BX=0005h)
DX = offset of ???
Return: DX = status (see also AX=FB42h/BX=0004h)
0000h successful
BX = selector for ???
CX = selector for ???
0002h invalid selector
----------2FFB42BX001C-----------------------
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
AX = FB42h
BX = 001Ch
ES = selector for DPMILOAD data (see AX=FB42h/BX=0005h)
CX = 1-based index of ???
DX = 1-based index of ???
Return: DX = status (0000h,0002h,FFF9h) (see AX=FB42h/BX=0004h)
----------2FFB42BX001D-----------------------
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET ???
AX = FB42h
BX = 001Dh
Return: CX:DX = ???
----------2FFB42BX001E-----------------------
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
AX = FB42h
BX = 001Eh
CX = ???
???
Return: DX = status (see also AX=FB42h/BX=0004h)
0000h successful
FFF7h ??? error
CX:BX -> ???
----------2FFB42BX001F-----------------------
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET ADDRESS OF ???
AX = FB42h
BX = 001Fh
DS:DX -> 8-character name of ???
???
Return: CX = selector of DPMILOAD data (see AX=FB42h/BX=0005h) for ???
0000h on error
SeeAlso: AX=FB42h/BX=000Eh
----------2FFB42BX0020-----------------------
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - NULL FUNCTION???
AX = FB42h
BX = 0020h
Return: DX = ??? (always 0000h)
----------2FFB42BX0021-----------------------
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET PROCESSOR EXCEPTION HANDLER VECT
AX = FB42h
BX = 0021h
CL = exception number (00h-1Fh)
Return: DX = status (see also AX=FB42h/BX=0004h)
0000h successful
AX:BX = selector:offset of handler
FFF2h unable to get exception handler vector
SeeAlso: AX=FB42h/BX=0022h,AX=FB42h/BX=0024h,INT 31/AX=0202h
----------2FFB42BX0022-----------------------
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - SET PROCESSOR EXCEPTION HANDLER VECT
AX = FB42h
BX = 0022h
CL = exception number (00h-1Fh)
SI:DX = selector:offset of new handler
Return: DX = status (0000h,0004h,FFF2h) (see AX=FB42h/BX=0004h)
SeeAlso: AX=FB42h/BX=0021h,AX=FB42h/BX=0025h,INT 31/AX=0203h
----------2FFB42BX0023-----------------------
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - CONVERT SELECTOR TO SEGMENT NUMBER
AX = FB42h
BX = 0023h
CX = selector
Return: DX = status (see also AX=FB42h/BX=0004h)
0000h successful
CX = real-mode segment number
FFF2h descriptor has invalid base address for real-mode segment
SeeAlso: AX=FB42h/BX=0010h
----------2FFB42BX0024-----------------------
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET PROTECTED-MODE INTERRUPT VECTOR
AX = FB42h
BX = 0024h
CL = interrupt number
Return: DX = status (0000h) (see also AX=FB42h/BX=0004h)
AX:BX = selector:offset of handler
SeeAlso: AX=FB42h/BX=0025h,INT 31/AX=0204h
----------2FFB42BX0025-----------------------
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - SET PROTECTED-MODE INTERRUPT VECTOR
AX = FB42h
BX = 0025h
CL = interrupt number
SI:DX = selector:offset of new handler
Return: DX = status (0000h,0004h,FFF2h) (see AX=FB42h/BX=0004h)
SeeAlso: AX=FB42h/BX=0024h,INT 31/AX=0205h
----------2FFB42BX0026-----------------------
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
AX = FB42h
BX = 0026h
CX = selector of DPMILOAD data (see AX=FB42h/BX=0005h)
DX = 1-based index of ???
???
Return: DX = status (0000h,0002h,FFF9h) (see AX=FB42h/BX=0004h)
0000h successful
BX = offset of ??? within data structure
----------2FFB42BX0027-----------------------
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET ???
AX = FB42h
BX = 0027h
CX = selector of DPMILOAD data (see AX=FB42h/BX=0005h)
DX = offset of ???
Return: DX = status (see also AX=FB42h/BX=0004h)
0000h successful
BX = ???
----------2FFB42BX0080-----------------------
INT 2F U - ??? - CALLED BY Borland C++ 3.0 DPMILOAD.EXE
AX = FB42h
BX = 0080h
???
Return: AX = ???
???
----------2FFB42BX0081-----------------------
INT 2F U - ??? - CALLED BY Borland C++ 3.0 DPMILOAD.EXE
AX = FB42h
BX = 0081h
???
Return: AX = ???
???
----------2FFB43-----------------------------
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - NULL FUNCTION
AX = FB43h
BX = subfunction (at least 0000h-000Eh)
Notes: this function is only present in protected mode; it does nothing but
an immediate IRET
DPMILOAD.EXE itself calls various subfunctions:
subfunction 0004h is called with CX=selector of ???, DI=selector
of DPMILOAD data
subfunction 0008h is called with CX=selector of DPMILOAD data
----------2FFB64-----------------------------
INT 2F U - AutoBraille v1.1A - GET ???
AX = FB64h
Return: AX = ??? (0006h seen)
Note: AutoBraille is a shareware text-to-braille converter by KANSYS, Inc.
----------2FFBA1BX0081-----------------------
INT 2F U - TKERNEL (Borland DOS extender) - INSTALLATION CHECK
AX = FBA1h
BX = 0081h
ES:DI -> 16-byte buffer
Return: if installed, first four bytes of ES:DI buffer are "IABH"
Note: TKERNEL is a licensed version of AI Architects/Ergo's OS/x86. It was
present only in Borland C++ 2.0; with version 3.0, the DOS extender
was moved into DPMILOAD.
SeeAlso: AH=A1h,AX=F100h,AX=FBA1h/BX=0082h,AX=FBA1h/BX=0084h,INT 15/AX=BF02h
SeeAlso: INT 21/AX=4403h"TKERNEL"
----------2FFBA1BX0082-----------------------
INT 2F U - TKERNEL (Borland DOS extender) - GET ENTRY POINT
AX = FBA1h
BX = 0082h
ES:DI -> response buffer (see below)
Return: ES:DI buffer filled
SeeAlso: AX=FBA1h/BX=0081h,AX=FBA1h/BX=0084h
Format of response buffer:
Offset Size Description
00h 4 BYTEs signature "IABH"
04h DWORD pointer to FAR extender entry point
Call entry point with:
AX = function number
0000h initialize???
STACK: WORD ???
Return: AX = status???
STACK unchanged
0001h get version???
Return: AX = 0200h for v2.0.34
0002h get ???
Return: AX = ??? (011Eh or 0182h seen)
0003h load protected-mode executable
STACK: DWORD -> ASCIZ filename of executable
DWORD ???
DWORD -> program arguments (counted string plus CR)
DWORD -> environment for protected-mode executable
(terminated with two consecutive NULs)
DWORD -> WORD buffer for ???
Return: AX = status???
STACK unchanged
0004h get descriptor
STACK: WORD selector for which to get descriptor
WORD segment number (when running in real mode)
DWORD -> buffer for descriptor
Return: CF clear if successful
buffer filled
CF set on error
AX destroyed???
STACK unchanged
0005h ???
STACK: WORD selector for ???
WORD subfunction number???
0000h run previously-loaded program???
0001h ??? (similar to 0000h)
0002h
0003h
0005h ??? (similar to 0000h and 0001h)
Return: AX = status???
STACK unchanged
0006h ???
STACK: WORD ???
DWORD -> WORD (call) max iterations of ???
(return) remaining iterations
Return: AX = ???
STACK unchanged
0007h unused
Return: AX = 0001h
0008h unused
Return: AX = 0001h
0009h copy protected-mode memory into conventional memory
STACK: WORD selector for source segment
WORD segment of source if in real mode???
DWORD offset of source
WORD number of bytes to copy
DWORD -> low-memory destination
Return: AX = status
STACK unchanged
000Ah copy conventional memory into protected-mode memory
STACK: WORD selector for destination segment
WORD segment of destination if in real mode???
DWORD offset of destination
WORD number of bytes to copy
DWORD -> low-memory source
Return: AX = status
STACK unchanged
000Bh get ??? pointers
STACK: WORD desired pointer
0000h get ???
0002h get protected-mode CR3
0003h get 4K page table buffer pointer
else Return: DX:AX = FFFFh:FFFFh
Return: DX:AX = requested pointer
STACK unchanged
000Ch set ??? pointers
STACK: WORD desired pointer
0000h set ???
0002h set protected-mode CR3
0003h set 4K page table buffer pointer
else ignore
DWORD new value for pointer
Return: STACK unchanged
000Dh get ??? pointers
STACK: WORD desired pointer
0000h get ???
0001h get ???
0002h get ???
0003h get ???
0004h get ???
0005h get ???
0006h get ???
0007h get ???
else Return: DX:AX = FFFFh:FFFFh
Return: DX:AX = desired pointer
STACK unchanged
000Eh set ??? pointer
STACK: WORD desired pointer
0000h set ???
0001h set ???
0002h set ???
0003h set ???
0004h set ???
0005h set ???
0006h set ???
0007h set ???
else Return: DX:AX = FFFFh:FFFFh
Return: STACK unchanged
000Fh get ???
Return: AX = ??? (seen 0008h)
0010h get ???
Return: AX = ???
0011h determine whether selector is valid
STACK: WORD possible selector
Return: AX = selector or 0000h if invalid
STACK unchanged
0012h get physical address
STACK: WORD selector for desired segment
WORD segment number if in real mode
DWORD offset within segment
Return: DX:AX = 32-bit physical address or 00000000h on error
BX destroyed
STACK unchanged
0013h ???
Note: normally jumps to code for function 0012h
0014h copy protected-mode memory to conventional memory, with ???
STACK: WORD selector for source segment
WORD segment of source if in real mode???
DWORD offset of source
WORD number of bytes to copy
DWORD -> low-memory destination
Return: AX = status???
STACK unchanged
0015h copy conventional memory to protected-mode memory, with ???
STACK: WORD selector for destination segment
WORD segment of destination if in real mode???
DWORD offset of destination
WORD number of bytes to copy
DWORD -> low-memory source
Return: AX = status???
STACK unchanged
0016h set ??? pointer
STACK: WORD unused
DWORD -> ??? or 0000h:0000h
Return: AX = 0000h
STACK unchanged
0017h allocate real-mode procedure???
STACK: DWORD ASCIZ name of procedure
DWORD ???
DWORD address of subroutine to invoke
Return: AX = status
0032h procedure by that name exists
0033h no more real-mode procedures available
DX destroyed
STACK unchanged
0018h unused
Return: AX = 0001h
0019h get parameter block
Return: DX:AX -> parameter block (format unknown at this time,
but 92h bytes)
(preceded by signature "!!PARAM-BLOCK!!")
001Ah get ???
Return: AX = ??? (0148h seen)
001Bh free real-mode procedure???
STACK: DWORD -> ASCIZ name of procedure
Return: ???
STACK unchanged
001Ch check whether packets from protected mode task pending
Return: AX = 0001h if packets pending, 0000h if not
001Dh set ???
STACK: DWORD ??? or 0000h:0000h
Return: AX,BX destroyed
STACK unchanged
001Eh ???
STACK: WORD ??? (high byte ignored)
DWORD -> data structure (see below)
Return: AX,BX,CX,DX destroyed
data structure updated
STACK unchanged
Format of data structure
Offset Size Description
00h 2 BYTEs unused
02h WORD ???
04h WORD ???
06h WORD ???
08h 2 BYTEs unused
0Ah WORD ???
0Ch WORD (call) ???
(return) offset of this data structure (BUG?)
001Fh set ???
STACK: WORD ??? (set to 0001h if zero)
Return: AX destroyed
STACK unchanged
0020h ???
STACK: DWORD -> ??? (8 bytes of data)
Return: AX = ???
STACK unchanged
0021h ???
STACK: DWORD -> ??? (8 bytes of data)
WORD ???
WORD ???
Return: AX = ???
STACK unchanged
0022h ???
STACK: DWORD -> ??? (8 bytes of data)
DWORD -> 4-byte buffer for results
Return: AX = ???
STACK unchanged
0023h ???
STACK: DWORD -> ??? (8 bytes of data)
Return: AX = ???
STACK unchanged
0024h set ???
STACK: WORD ???
Return: AX destroyed
STACK unchanged
0025h get ???
Return: AX = ??? (value set with func 0024h)
0026h BUG: jumps to hyperspace due to fencepost error
FFFFh set DOS memory management functions
BX:SI -> FAR routine for allocating DOS memory
(called with AH=48h,BX=number of paragraphs to alloc;
returns CF clear, AX=segment of allocated memory, or
CF set on error)
CX:DI -> FAR routine for freeing DOS memory
(called with AH=49h,ES=segment of block to free;
returns CF set on error,AX=error code)
Note: each of these pointers normally points at INT 21/RETF
other Return: AX = 0001h
Note: BX may be destroyed by any of the API calls
----------2FFBA1BX0084-----------------------
INT 2F U - TKERNEL (Borland DOS extender) - UNINSTALL
AX = FBA1h
BX = 0084h
ES:DI -> response buffer (see below)
Return: ES:DI buffer filled
SeeAlso: AX=FBA1h/BX=0081h,AX=FBA1h/BX=0084h
Format of response buffer:
Offset Size Description
00h 4 BYTEs signature "IABH"
04h WORD success indicator
0001h failed (INT 2F hooked by another program)
unchanged if successful
06h WORD segment of ???
08h WORD segment of ??? memory block to free if nonzero
0Ah WORD segment of ??? memory block to free if nonzero
----------2FFBFBES0000-----------------------
INT 2F U - SoundBlaster speech driver - INSTALLATION CHECK
AX = FBFBh
ES = 0000h
Return: ES nonzero if installed
ES:BX -> entry point data structure (see below)
SeeAlso: INT 80/BX=0000h,INT F3"SoundBlaster"
Format of entry point data structure:
Offset Size Description
00h 3 BYTEs signature "FB "
03h BYTE driver major version number???
04h DWORD speech driver entry point
08h 24 BYTEs ???
20h ? BYTEs data buffer for calling speech driver
Call driver entry point with:
AL = function
07h speak a string
data buffer (see above) contains:
BYTE length of string
N BYTEs string to speak
----------2FFE00DI4E55-----------------------
INT 2F U - NORTON UTILITIES 5.0+ TSRs - INSTALLATION CHECK/STATUS REPORT
AX = FE00h
DI = 4E55h ("NU")
SI = TSR identifier
4346h ("CF") NCACHE-F (v5) / NCACHE (v6.0+)
4353h ("CS") NCACHE-S (v5 only)
4443h ("DC") DISKREET
444Dh ("DM") DISKMON
4653h ("FS") FILESAVE (v5) / EP (v6.0+)
Return: SI = TSR reply
lowercase version of SI on entry (i.e. SI OR 2020h)
AH = status
00h installed but disabled internally
01h installed and enabled
AL = status
00h NCACHE-x or DISKREET installed
01h FILESAVE / EP / DISKMON v6 installed
45h DISKMON v5 installed
BX = length of *.INI file (DISKMON and FILESAVE/EP only) (see below)
CX = segment of resident portion
FFFFh if completely loaded high (NCACHE)
---FILESAVE/EP---
DL = ??? (apparently always 00h)
---DISKMON---
DX = ??? (apparently always 1AE6h [v5] / 1B86h [v6])
Note: the value returned in CX is incorrect for NCACHE 6.00
SeeAlso: AX=FE01h,AX=FE02h,AX=FE03h,AX=FE04h,AX=FE05h
Format of DISKMON.INI file:
Offset Size Description
-6Ch 108 BYTEs (in memory copy only)
list of filenames which are always protected:
IBMBIO.COM/IBMDOS.COM, IO.SYS/MSDOS.SYS, TBIOS.SYS/TDOS.SYS,
MIO.SYS/IO.BIN, COMMAND.COM
00h BYTE ??? always 01h
01h BYTE disk light (00h off, 01h on)
02h BYTE disk protection (00h off, 01h on)
03h BYTE protected areas
01h system area
02h files
03h system area and files
04h entire disk
04h BYTE floppy access (00h not allowed, 01h allowed)
05h 27 BYTEs filename extension list (9 entries)
(lowercase, blank padded or = 000000h)
20h 240 BYTEs filename list (20 entries)
(lowercase, name and extension blank padded, with '.')
Note: CX:0508h -> copy in installed TSR (v5)
CX:052Fh -> copy in installed TSR (v6)
Format of FILESAVE.INI / EP.INI file:
Offset Size Description
00h 26 BITs drive list (bit set: file protection on, cleared: off):
00h BYTE drives A: - H:
01h BYTE drives I: - P:
02h BYTE drives Q: - X:
03h BYTE drives Y: - Z:
04h BYTE which files to protect
00h all files
01h all files with extension in list
02h all files except those with extension in list
05h 27 BYTEs filename extension list (9 entries, uppercase, ASCIZ)
20h BYTE include files with archive bit clear (00h no, 01h yes)
21h WORD number of days after which files are purged (0 = never)
23h WORD max kilobytes of erased file space to hold (0 = all)
Note: CX:03D2h -> copy in installed TSR (v5.0)
CX:03F5h -> copy in installed TSR (v6.0)
----------2FFE01DI4E55-----------------------
INT 2F U - NORTON UTILITIES 5.0+ TSRs - ENABLE
AX = FE01h
DI = 4E55h ("NU")
SI = TSR identifier (see AX=FE00h)
Return: SI = TSR reply (lowercase version of entry SI, i.e. SI OR 2020h)
AX = status
0002h successful (DISKMON, FILESAVE, EP)
FE00h successful (NCACHE-x, DISKREET)
Notes: if the enable/disable calls are used on DISKMON or NCACHE-x, the status
report generated by the programs still indicates the previous state,
and DISKMON.INI is not updated
apparently has no effect on DISKREET
SeeAlso: AX=FE00h,AX=FE02h
----------2FFE02DI4E55-----------------------
INT 2F U - NORTON UTILITIES 5.0+ TSRs - DISABLE
AX = FE02h
DI = 4E55h ("NU")
SI = TSR identifier (see AX=FE00h)
Return: SI = TSR reply (lowercase version of entry SI, i.e. SI OR 2020h)
AX = status
0004h successful (DISKMON, FILESAVE)
FE00h successful (NCACHE-x, DISKREET)
Note: (see AX=FE01h)
SeeAlso: AX=FE00h,AX=FE01h
----------2FFE03DI4E55-----------------------
INT 2F U - NORTON UTILITIES 5.0+ TSRs - internal - ???
AX = FE03h
DI = 4E55h ("NU")
SI = TSR identifier (see AX=FE00h)
Return: SI = TSR reply (lowercase version of entry SI, i.e. SI OR 2020h)
AX = status
0006h successful???
Notes: only supported by DISKMON, FILESAVE, and NCACHE-x
reportedly dangerous
SeeAlso: AX=FE00h
----------2FFE04DI4E55-----------------------
INT 2F U - NORTON UTILITIES 5.0+ DISKMON, FILESAVE / EP - internal - ???
AX = FE04h
DI = 4E55h ("NU")
SI = TSR identifier (see AX=FE00h)
Return: SI = TSR reply (lowercase version of entry SI, i.e. SI or 2020h)
AX = status
0008h successful???
SeeAlso: AX=FE00h
----------2FFE05DI4E55-----------------------
INT 2F U - NORTON UTILITIES 5.0+ DISKMON, FILESAVE / EP - internal - ???
AX = FE05h
DI = 4E55h ("NU")
SI = TSR identifier (see AX=FE00h)
Return: SI = TSR reply (lowercase version of entry SI, i.e. SI or 2020h)
AX = status
000Ah successful???
Note: reportedly dangerous
SeeAlso: AX=FE00h
----------2FFF00-----------------------------
INT 2F - Topware Network Operating System - INSTALLATION CHECK
AX = FF00h
Return: AL = 00h not installed, OK to install
= 01h not installed, not OK to install
= FFh installed
SeeAlso: AX=FF01h,INT 21/AH=FFh"Topware",INT 7A"Topware"
----------2FFF01-----------------------------
INT 2F - Topware Network Operating System - GET VERSION
AX = FF01h
Return: AX = version
SeeAlso: AX=FF00h
----------30---------------------------------
INT 30 - (NOT A VECTOR!) - DOS 1+ - FAR JMP instruction for CP/M-style calls
the CALL 5 entry point does a FAR jump to here
Note: under DOS 2+, the instruction at PSP:0005 points two bytes too low in
memory
SeeAlso: INT 21/AH=26h
----------31---------------------------------
INT 31 - overwritten by CP/M jump instruction in INT 30
----------310000-----------------------------
INT 31 P - DPMI 0.9+ - ALLOCATE LDT DESCRIPTORS
AX = 0000h
CX = number of descriptors to allocate
Return: CF clear if successful
AX = base selector
CF set on error
AX = error code (DPMI 1.0+)
0000h-7FFFh DOS error passed through by DPMI
8001h unsupported function
8002h object in wrong state for function
8003h system integrity would be endangered
8004h deadlock detected
8005h pending serialization request cancelled
8010h out of DPMI internal resources
8011h descriptor unavailable
8012h linear memory unavailable
8013h physical memory unavailable
8014h backing store unavailable
8015h callback unavailable
8016h handle unavailable
8017h maximum lock count exceeded
8018h shared memory already serialized exclusively by another
8019h shared memory already serialized shared by another client
8021h invalid value for numeric or flag parameter
8022h invalid segment selector
8023h invalid handle
8024h invalid callback
8025h invalid linear address
8026h request not supported by hardware
Notes: DPMI is the DOS Protected-Mode Interface
the base and limit of the returned descriptors will be 0, and the type
will be "data"
add the value returned by INT 31/AX=0003h to move to subsequent
descriptors if multiple descriptors were allocated
not supported by MS Windows 3.0 in Standard mode
SeeAlso: AX=0001h,AX=000Dh,INT 21/AX=3501h
----------310001-----------------------------
INT 31 P - DPMI 0.9+ - FREE LDT DESCRIPTOR
AX = 0001h
BX = selector to free
Return: CF clear if successful
CF set on error
AX = error code (DPMI 1.0+) (8022h) (see AX=0000h)
Notes: only one descriptor is freed per call
the program's initial CS, DS, and SS descriptors may be freed
(DPMI 1.0+) any segment registers containing the freed selector are
set to 0000h
not supported by MS Windows 3.0 in Standard mode
SeeAlso: AX=0000h,AX=000Ah,AX=000Dh,INT 21/AX=3502h
----------310002-----------------------------
INT 31 P - DPMI 0.9+ - SEGMENT TO DESCRIPTOR
AX = 0002h
BX = real mode segment
Return: CF clear if successful
AX = selector corresponding to real mode segment (64K limit)
CF set on error
AX = error code (DPMI 1.0+) (8011h) (see AX=0000h)
Notes: multiple calls for the same real mode segment return the same selector
the returned descriptor can never be modified or freed
not supported by MS Windows 3.0 in Standard mode
----------310003-----------------------------
INT 31 P - DPMI 0.9+ - GET NEXT SELECTOR INCREMENT VALUE
AX = 0003h
Return: CF clear
AX = value to add to get next sequential selector
Notes: the increment will be a power of two
not supported by MS Windows 3.0 in Standard mode
SeeAlso: AX=0000h
----------310004-----------------------------
INT 31 P - DPMI 0.9+ - LOCK SELECTOR
AX = 0004h
BX = selector to lock (prevent paging)
Return: ???
Note: although marked as reserved in versions 0.9 and 1.0 of the DPMI
specification, this function is called by MS Windows TASKMAN,
PROGMAN, and KERNEL
SeeAlso: AX=0005h,AX=0600h
----------310005-----------------------------
INT 31 P - DPMI 0.9+ - UNLOCK SELECTOR
AX = 0005h
BX = selector to unlock (permit paging)
Return: ???
Note: although marked as reserved in versions 0.9 and 1.0 of the DPMI
specification, this function is called by MS Windows TASKMAN,
PROGMAN, and KERNEL
SeeAlso: AX=0004h,AX=0601h
----------310006-----------------------------
INT 31 P - DPMI 0.9+ - GET SEGMENT BASE ADDRESS
AX = 0006h
BX = selector
Return: CF clear if successful
CX:DX = linear base address of segment
CF set on error
AX = error code (DPMI 1.0+) (8022h) (see AX=0000h)
Note: not supported by MS Windows 3.0 in Standard mode
SeeAlso: AX=0007h,INT 21/AX=3504h
----------310007-----------------------------
INT 31 P - DPMI 0.9+ - SET SEGMENT BASE ADDRESS
AX = 0007h
BX = selector
CX:DX = linear base address
Return: CF clear if successful
CF set on error
AX = error code (DPMI 1.0+) (8022h,8025h) (see AX=0000h)
Notes: only modify descriptors allocated with INT 31/AX=0000h
only the low 24 bits of the address will be used by 16-bit DPMI
implementations even on a 386 or higher
DPMI 1.0+ automatically reloads any segment registers containing the
selector being modified
not supported by MS Windows 3.0 in Standard mode
SeeAlso: AX=0006h,AX=0008h,AX=0009h,AX=000Ch,INT 21/AX=3503h
SeeAlso: INT 21/AH=E9h"OS/286"
----------310008-----------------------------
INT 31 P - DPMI 0.9+ - SET SEGMENT LIMIT
AX = 0008h
BX = selector
CX:DX = segment limit
Return: CF clear if successful
CF set on error
AX = error code (DPMI 1.0+) (8021h,8022h,8025h) (see AX=0000h)
Notes: CX must be zero for 16-bit DPMI implementations
limits greater than 1MB must be page aligned (low 12 bits set)
only modify descriptors allocated with INT 31/AX=0000h
DPMI 1.0+ automatically reloads any segment registers containing the
selector being modified
not supported by MS Windows 3.0 in Standard mode
SeeAlso: AX=0007h,AX=0009h,AX=000Ch,INT 21/AX=3505h,INT 21/AH=E9h"OS/286"
----------310009-----------------------------
INT 31 P - DPMI 0.9+ - SET DESCRIPTOR ACCESS RIGHTS
AX = 0009h
BX = selector
CL = access rights/type byte
CH = 80386 extended rights/type byte (32-bit DPMI implementations only)
Return: CF clear if successful
CF set on error
AX = error code (DPMI 1.0+) (8021h,8022h,8025h) (see AX=0000h)
Notes: if the Present bit is clear, CL bits 0-3 may have any value
DPMI 1.0+ automatically reloads any segment registers containing the
selector being modified
not supported by MS Windows 3.0 in Standard mode
SeeAlso: AX=0007h,AX=0008h,AX=000Ch,INT 21/AX=2514h
----------31000A-----------------------------
INT 31 P - DPMI 0.9+ - CREATE ALIAS DESCRIPTOR
AX = 000Ah
BX = selector
Return: CF clear if successful
AX = new data selector
CF set on error
AX = error code (DPMI 1.0+) (8011h,8022h) (see AX=0000h)
Notes: fails if selector in BX is not a code segment or is invalid
use INT 31/AX=0001h to free new selector
future changes to the original selector will not be reflected in the
returned alias selector
not supported by MS Windows 3.0 in Standard mode
SeeAlso: AX=0001h
----------31000B-----------------------------
INT 31 P - DPMI 0.9+ - GET DESCRIPTOR
AX = 000Bh
BX = LDT selector
ES:(E)DI -> 8-byte buffer for copy of descriptor
Return: CF clear if successful
buffer filled
CF set on error
AX = error code (DPMI 1.0+) (8022h) (see AX=0000h)
Notes: 16-bit programs use ES:DI as pointer, 32-bit must use ES:EDI
not supported by MS Windows 3.0 in Standard mode
SeeAlso: AX=000Ch
----------31000C-----------------------------
INT 31 P - DPMI 0.9+ - SET DESCRIPTOR
AX = 000Ch
BX = LDT selector
ES:(E)DI -> 8-byte buffer containing descriptor
Return: CF clear if successful
CF set on error
AX = error code (DPMI 1.0+) (8021h,8022h,8025h) (see AX=0000h)
Notes: 16-bit programs use ES:DI as pointer, 32-bit must use ES:EDI
only modify descriptors allocated with INT 31/AX=0000h
DPMI 1.0+ automatically reloads any segment registers containing the
selector being modified
not supported by MS Windows 3.0 in Standard mode
SeeAlso: AX=000Bh
----------31000D-----------------------------
INT 31 P - DPMI 0.9+ - ALLOCATE SPECIFIC LDT DESCRIPTOR
AX = 000Dh
BX = LDT selector
Return: CF clear if successful
descriptor allocated
CF set on error
AX = error code (DPMI 1.0+) (8011h,8022h) (see AX=0000h)
Notes: free descriptor with INT 31/AX=0001h
the first 16 descriptors (04h-7Ch) are reserved for this function, but
some may already be in use by other applications under DPMI 0.9;
DPMI 1.0 guarantees 16 descriptors per client
not supported by MS Windows 3.0 in Standard mode
SeeAlso: AX=0000h,AX=0001h
----------31000E-----------------------------
INT 31 P - DPMI 1.0+ - GET MULTIPLE DESCRIPTORS
AX = 000Eh
CX = number of descriptors to copy
ES:(E)DI -> descriptor buffer (see below)
Return: CF clear if successful
descriptors copied
CF set on error
AX = error code (8022h) (see AX=0000h)
CX = number of descriptors successfully copied
Notes: 16-bit programs use ES:DI as pointer, 32-bit must use ES:EDI
if the function fails, the first CX descriptors are valid; the
remainder are not modified
SeeAlso: AX=000Bh,AX=000Fh
Format of descriptor buffer entry (one per descriptor to get):
Offset Size Description
00h WORD selector (set by client)
02h QWORD descriptor (set by host)
----------31000F-----------------------------
INT 31 P - DPMI 1.0+ - SET MULTIPLE DESCRIPTORS
AX = 000Fh
CX = number of descriptors to copy
ES:(E)DI -> descriptor buffer (see below)
Return: CF clear if successful
descriptors copied
CF set on error
AX = error code (8021h,8022h,8025h) (see AX=0000h)
CX = number of descriptors successfully copied
Notes: 16-bit programs use ES:DI as pointer, 32-bit must use ES:EDI
if the function fails, the first CX descriptors are valid; the
remainder are not modified
DPMI 1.0+ automatically reloads any segment registers containing a
selector being modified
SeeAlso: AX=000Ch,AX=000Eh
Format of descriptor buffer entry (one per descriptor to set):
Offset Size Description
00h WORD selector
02h QWORD descriptor
----------310100-----------------------------
INT 31 P - DPMI 0.9+ - ALLOCATE DOS MEMORY BLOCK
AX = 0100h
BX = number of paragraphs to allocate
Return: CF clear if successful
AX = real mode segment of allocated block
DX = first selector for allocated block
CF set on error
AX = DOS error code (07h,08h) (see INT 21/AH=59h)
(DPMI 1.0+) DPMI error code (8011h) (see AX=0000h)
BX = size (in paragraphs) of largest available block
Notes: multiple contiguous selectors are allocated for blocks of more than 64K
if the caller is a 16-bit program
never modify or deallocate returned descriptors
not supported by MS Windows 3.0 in Standard mode
SeeAlso: AX=0101h,AX=0501h
----------310101-----------------------------
INT 31 P - DPMI 0.9+ - FREE DOS MEMORY BLOCK
AX = 0101h
DX = selector of block
Return: CF set if successful
CF set on error
AX = DOS error code (07h,09h) (see INT 21/AH=59h)
Notes: all descriptors allocated for the block are automatically freed
DPMI 1.0+ automatically zeros any segment registers containing a
selector freed by this function
not supported by MS Windows 3.0 in Standard mode
SeeAlso: AX=0100h,AX=0102h,AX=0502h
----------310102-----------------------------
INT 31 P - DPMI 0.9+ - RESIZE DOS MEMORY BLOCK
AX = 0102h
BX = new block size in paragraphs
DX = selector of block
Return: CF clear if successful
CF set on error
AX = DOS error code (07h,08h,09h) (see INT 21/AH=59h)
(DPMI 1.0+) DPMI error code (8011h,8022h) (see AX=0000h)
BX = maximum block size (in paragraphs) possible
Notes: increasing the size of a block past a 64K boundary will fail if the
next descriptor in the LDT is already in use
shrinking a block past a 64K boundary will cause some selectors to be
freed; DPMI 1.0+ automatically zeros any segment registers containing
a selector freed by this function
not supported by MS Windows 3.0 in Standard mode
SeeAlso: AX=0100h
----------310200-----------------------------
INT 31 P - DPMI 0.9+ - GET REAL MODE INTERRUPT VECTOR
AX = 0200h
BL = interrupt number
Return: CF clear
CX:DX = segment:offset of real mode interrupt handler
Note: the DPMI implementation is required to support all 256 vectors
SeeAlso: AX=0201h,AX=0204h,INT 21/AX=2503h
----------310201-----------------------------
INT 31 P - DPMI 0.9+ - SET REAL MODE INTERRUPT VECTOR
AX = 0201h
BL = interrupt number
CX:DX = segment:offset of real mode handler
Return: CF clear
Note: all memory that may be touched by a hardware interrupt handler must be
locked down with INT 31/AX=0600h
SeeAlso: AX=0200h,AX=0205h,AX=0600h,INT 21/AX=2505h
----------310202-----------------------------
INT 31 P - DPMI 0.9+ - GET PROCESSOR EXCEPTION HANDLER VECTOR
AX = 0202h
BL = exception number (00h-1Fh)
Return: CF clear if successful
CX:(E)DX = selector:offset of handler
CF set on error
AX = error code (DPMI 1.0+) (8021h) (see AX=0000h)
Notes: 16-bit programs receive the pointer in CX:DX, 32-bit programs in CX:EDX
DPMI 1.0+ supports this function only for backward compatibility; use
AX=0210h or AX=0211h instead
not supported by MS Windows 3.0 in Standard mode
SeeAlso: AX=0203h,AX=0210h,AX=0211h,INT 2F/AX=FB42h/BX=0021h
----------310203-----------------------------
INT 31 P - DPMI 0.9+ - SET PROCESSOR EXCEPTION HANDLER VECTOR
AX = 0203h
BL = exception number (00h-1Fh)
CX:(E)DX = selector:offset of handler
Return: CF clear if successful
CF set on error
AX = error code (DPMI 1.0+) (8021h,8022h) (see AX=0000h)
Notes: 32-bit programs must supply an offset in EDX and use a 32-bit interrupt
stack frame on chaining to the next exception handler
the handler should return using a FAR return
all fault stack frames contain an error code, but it is only valid for
exceptions 08h and 0Ah-0Eh
handlers will only be called if the exception occurs in protected mode,
and the DPMI host does not transparently handle the exception
the handler may change certain values on the stack frame (see below)
DPMI 1.0+ supports this function only for backward compatibility; use
AX=0212h or AX=0213h instead
not supported by MS Windows 3.0 in Standard mode
SeeAlso: AX=0202h,AX=0212h,AX=0213h,INT 2F/AX=FB42h/BX=0022h
Format of stack frame for 16-bit programs: (offset from SS:SP)
Offset Size Description
00h DWORD return CS:IP (do not change)
04h WORD error code
06h DWORD CS:IP of exception
0Ah WORD flags
0Ch DWORD SS:SP
Format of stack frame for 32-bit programs: (offset from SS:ESP)
Offset Size Description
00h DWORD return EIP (do not change)
04h WORD return CS selector (do not change)
06h WORD reserved (do not change)
08h DWORD error code
0Ch DWORD EIP of exception
10h WORD CS selector of exception
12h WORD reserved (do not change)
14h DWORD EFLAGS
18h DWORD ESP
1Ch WORD SS
1Eh WORD reserved (do not change)
----------310204-----------------------------
INT 31 P - DPMI 0.9+ - GET PROTECTED MODE INTERRUPT VECTOR
AX = 0204h
BL = interrupt number
Return: CF clear
CX:(E)DX = selector:offset of handler
Notes: 16-bit programs use CX:DX, 32-bit programs use CX:EDX
DPMI implementations are required to support all 256 vectors
not supported by MS Windows 3.0 in Standard mode
SeeAlso: AX=0200h,AX=0205h,INT 21/AX=2502h,INT 2F/AX=FB42h/BX=0024h
----------310205-----------------------------
INT 31 P - DPMI 0.9+ - SET PROTECTED MODE INTERRUPT VECTOR
AX = 0205h
BL = interrupt number
CX:(E)DX = selector:offset of handler
Return: CF clear if successful
CF set on error
AX = error code (DPMI 1.0+) (8022h) (see AX=0000h)
Notes: 16-bit programs use CX:DX, 32-bit programs use CX:EDX
32-bit programs must use a 32-bit interrupt stack frame when chaining
to the next handler
DPMI implementations are required to support all 256 vectors
hardware interrupts are reflected to the virtual machine's primary
client, software interrupts to the current client
not supported by MS Windows 3.0 in Standard mode
SeeAlso: AX=0201h,AX=0204h,INT 21/AX=2504h,INT 2F/AX=FB42h/BX=0025h
----------310210-----------------------------
INT 31 P - DPMI 1.0+ - GET PROTECTED MODE EXTENDED PROCESSOR EXCEPTION HANDLER
AX = 0210h
BL = exception number (00h-1Fh)
Return: CF clear if successful
CX:(EDX) = selector:offset of exception handler
CF set on error
AX = error code (8021h) (see AX=0000h)
Note: DPMI host reflects exception to current client's handler
SeeAlso: AX=0202h,AX=0211h,AX=0212h
----------310211-----------------------------
INT 31 P - DPMI 1.0+ - GET REAL MODE EXTENDED PROCESSOR EXCEPTION HANDLER
AX = 0211h
BL = exception number (00h-1Fh)
Return: CF clear if successful
CX:(EDX) = selector:offset of exception handler
CF set on error
AX = error code (8021h) (see AX=0000h)
Notes: returns address of protected-mode handler for real-mode exception
DPMI host performs a switch to protected mode, reflects the exception
to the virtual machine's primary client, and returns to real mode
on the handler's completion
SeeAlso: AX=0202h,AX=0210h,AX=0213h
----------310212-----------------------------
INT 31 P - DPMI 1.0+ - SET PROTECTED MODE EXTENDED PROCESSOR EXCEPTION HANDLER
AX = 0212h
BL = exception or fault number (00h-1Fh)
CX:(E)DX = exception handler selector:offset
Return: CF clear if successful
CF set on error
AX = error code (8021h,8022h) (see AX=0000h)
Note: DPMI host sends exception to current client's handler
SeeAlso: AX=0203h,AX=0210h,AX=0213h
----------310213-----------------------------
INT 31 P - DPMI 1.0+ - SET REAL MODE EXTENDED PROCESSOR EXCEPTION HANDLER
AX = 0213h
BL = exception or fault number (00h-1Fh)
CX:(E)DX = exception handler selector:offset
Return: CF clear if successful
CF set on error
AX = error code (8021h,8022h) (see AX=0000h)
Notes: specifies address of protected-mode handler for real-mode exception
DPMI host performs a switch to protected mode, reflects the exception
to the virtual machine's primary client, and returns to real mode
on the handler's completion
SeeAlso: AX=0203h,AX=0211h,AX=0212h
----------310300-----------------------------
INT 31 P - DPMI 0.9+ - SIMULATE REAL MODE INTERRUPT
AX = 0300h
BL = interrupt number
BH = flags
bit 0: reset the interrupt controller and A20 line (DPMI 0.9)
reserved, must be 0 (DPMI 1.0+)
others must be 0
CX = number of words to copy from protected mode to real mode stack
ES:(E)DI = selector:offset of real mode call structure (see below)
Return: CF clear if successful
real mode call structure modified (all fields except SS:SP, CS:IP
filled with return values from real mode interrupt)
CF set on error
AX = error code (DPMI 1.0+) (8012h,8013h,8014h,8021h)(see AX=0000h)
protected mode stack unchanged
Notes: 16-bit programs use ES:DI as pointer, 32-bit programs use ES:EDI
CS:IP in the real mode call structure is ignored for this call,
instead, the indicated interrupt vector is used for the address
the flags in the call structure are pushed on the real mode stack to
form an interrupt stack frame, and the trace and interrupt flags are
clear on entry to the handler
DPMI will provide a small (30 words) real mode stack if SS:SP is zero
the real mode handler must return with the stack in the same state as
it was on being called
SeeAlso: AX=0302h,INT 21/AX=2511h,INT 21/AH=E3h"OS/286"
SeeAlso: INT 2F/AX=FB42h/BX=000Dh
Format of real mode call structure:
Offset Size Description
00h DWORD EDI
04h DWORD ESI
08h DWORD EBP
0Ch DWORD reserved (00h)
10h DWORD EBX
14h DWORD EDX
18h DWORD ECX
1Ch DWORD EAX
20h WORD flags
22h WORD ES
24h WORD DS
26h WORD FS
28h WORD GS
2Ah WORD IP
2Ch WORD CS
2Eh WORD SP
30h WORD SS
----------310301-----------------------------
INT 31 P - DPMI 0.9+ - CALL REAL MODE PROCEDURE WITH FAR RETURN FRAME
AX = 0301h
BH = flags
bit 0: reset the interrupt controller and A20 line (DPMI 0.9)
reserved, must be 0 (DPMI 1.0+)
others must be 0
CX = number of words to copy from protected mode to real mode stack
ES:DI / ES:EDI = selector:offset of real mode call structure
(see INT 31/AX=0300h)
Return: CF clear if successful
real mode call structure modified (all fields except SS:SP, CS:IP
filled with return values from real mode interrupt)
CF set on error
AX = error code (DPMI 1.0+) (8012h,8013h,8014h,8021h)(see AX=0000h)
protected mode stack unchanged
Notes: 16-bit programs use ES:DI as pointer, 32-bit programs use ES:EDI
the real mode procedure must exit with a FAR return
DPMI will provide a small (30 words) real mode stack if SS:SP is zero
the real mode handler must return with the stack in the same state as
it was on being called
SeeAlso: AX=0300h,AX=0302h,INT 21/AX=250Eh,INT 21/AH=E1h"OS/286"
----------310302-----------------------------
INT 31 P - DPMI 0.9+ - CALL REAL MODE PROCEDURE WITH IRET FRAME
AX = 0302h
BH = flags
bit 0: reset the interrupt controller and A20 line (DPMI 0.9)
reserved, must be 0 (DPMI 1.0+)
others must be 0
CX = number of words to copy from protected mode to real mode stack
ES:DI / ES:EDI = selector:offset of real mode call structure
(see INT 31/AX=0300h)
Return: CF clear if successful
real mode call structure modified (all fields except SS:SP, CS:IP
filled with return values from real mode interrupt)
CF set on error
AX = error code (DPMI 1.0+) (8012h,8013h,8014h,8021h)(see AX=0000h)
protected mode stack unchanged
Notes: 16-bit programs use ES:DI as pointer, 32-bit programs use ES:EDI
the flags in the call structure are pushed on the real mode stack to
form an interrupt stack frame, and the trace and interrupt flags are
clear on entry to the handler
the real mode procedure must exit with an IRET
DPMI will provide a small (30 words) real mode stack if SS:SP is zero
the real mode handler must return with the stack in the same state as
it was on being called
SeeAlso: AX=0300h
----------310303-----------------------------
INT 31 P - DPMI 0.9+ - ALLOCATE REAL MODE CALLBACK ADDRESS
AX = 0303h
DS:SI / DS:ESI = selector:offset of procedure to call
ES:DI / ES:EDI = selector:offset of real mode call structure
(see AX=0300h)
Return: CF clear if successful
CX:DX = segment:offset of real mode call address
CF set on error
AX = error code (DPMI 1.0+) (8015h) (see AX=0000h)
Notes: the real mode call structure is static, causing reentrancy problems;
its contents are only valid at the time of a callback
the called procedure must modify the real mode CS:IP before returning
values are returned to real mode by modifying the real mode call struc
DPMI hosts must provide at least 16 callbacks per client
SeeAlso: AX=0304h,AX=0C00h
Values callback procedure is called with:
DS:SI / DS:ESI = selector:offset of real mode SS:SP
ES:DI / ES:EDI = selector:offset of real mode call structure
SS:SP / SS:ESP = locked protected mode API stack
interrupts disabled
Return: (with IRET)
ES:DI / ES:EDI = selector:offset of real mode call structure to restore
----------310304-----------------------------
INT 31 P - DPMI 0.9+ - FREE REAL MODE CALLBACK ADDRESS
AX = 0304h
CX:DX = real mode callback address
Return: CF clear if successful
CF set on error
AX = error code (DPMI 1.0+) (8024h) (see AX=0000h)
SeeAlso: AX=0303h
----------310305-----------------------------
INT 31 P - DPMI 0.9+ - GET STATE SAVE/RESTORE ADDRESSES
AX = 0305h
Return: CF clear
AX = size in bytes of state buffer
BX:CX = real mode address of procedure to save/restore state
SI:DI / SI:EDI = protected mode procedure to save/restore state
Notes: the buffer size will be zero if it is not necessary to preserve state
16-bit programs should call SI:DI, 32-bit programs should call SI:EDI
this function is only needed if using the raw mode switch service
SeeAlso: AX=0306h
Values to call state-save procedures with:
AL = direction
00h save state
01h restore state
ES:DI / ES:EDI -> state buffer
Return: all registers preserved
----------310306-----------------------------
INT 31 P - DPMI 0.9+ - GET RAW MODE SWITCH ADDRESSES
AX = 0306h
Return: CF clear
BX:CX -> procedure to switch from real to protected mode
SI:DI / SI:EDI -> procedure to switch from protected to real mode
Notes: 16-bit programs should jump to SI:DI, 32-bit programs should use SI:EDI
the caller must save and restore the state of the task with AX=0305h
not supported by MS Windows 3.0 in Standard mode
SeeAlso: AX=0305h
Values to JUMP at mode-switch procedures with:
AX = new DS
CX = new ES
DX = new SS
BX / EBX = new SP / ESP
SI = new CS
DI / EDI = new IP / EIP
Notes: BP/EBP is preserved across the call, but AX/EAX, BX/EBX, CX/ECX,
DX/EDX, SI/ESI, and DI/EDI will be undefined; FS and GS will be 0000h
interrupts will stay disabled during the entire mode switch if they
are disabled on entry to the mode-switch procedure
----------310400-----------------------------
INT 31 P - DPMI 0.9+ - GET DPMI VERSION
AX = 0400h
Return: CF clear
AH = major version of DPMI spec supported
AL = two-digit minor version of DPMI spec supported
BX = flags
bit 0: running under an 80386 (32-bit) implementation
bit 1: processor returns to real mode for reflected interrupts
instead of V86 mode
bit 2: virtual memory supported
bit 3: reserved (undefined)
others reserved (zero)
CL = processor type (02h=80286, 03h=80386, 04h=80486)
DH = curr value of virtual master interrupt controller base interrupt
DL = curr value of virtual slave interrupt controller base interrupt
SeeAlso: AX=0401h,INT 21/AX=250Ch,INT 67/AX=DE0Ah
----------310401-----------------------------
INT 31 P - DPMI 1.0+ - GET DPMI CAPABILITIES
AX = 0401h
ES:(E)DI -> 128-byte buffer (see below)
Return: CF clear if successful
AX = capabilities
bit 0: paged accessed/dirty supported (see AX=0506h,AX=0507h)
1: exceptions restartability supported
2: device mapping supported (see AX=0508h)
3: conventional memory mapping supported (see AX=0509h)
4: demand zero-fill supported
5: write-protect client capability supported
6: write-protect host capability supported
7-15: reserved
CX = reserved (00h)
DX = reserved (00h)
buffer filled
CF set on error (DPMI 0.9 only)
SeeAlso: AX=0400h
Format of buffer:
Offset Size Description
00h BYTE host major version number
01h BYTE host minor version number
02h 126 BYTEs ASCIZ host vendor name
----------310500-----------------------------
INT 31 P - DPMI 0.9+ - GET FREE MEMORY INFORMATION
AX = 0500h
ES:DI / ES:EDI -> buffer for memory information (see below)
Return: CF clear
Notes: 16-bit programs use ES:DI, 32-bit programs use ES:EDI
this function must be considered advisory because other applications
may affect the results at any time after the call
fields not supported by the DPMI implementation are filled with
FFFFFFFFh
DPMI 1.0+ supports this function solely for backward compatibility; use
AX=050Bh instead
SeeAlso: AX=0501h,AX=0604h
Format of memory information:
Offset Size Description
00h DWORD largest available block in bytes
04h DWORD maximum unlocked page allocation
08h DWORD maximum locked page allocation
0Ch DWORD total linear address space in pages
10h DWORD total unlocked pages
14h DWORD free pages
18h DWORD total physical pages
1Ch DWORD free linear address space in pages
20h DWORD size of paging file/partition in pages
24h 12 BYTEs reserved
----------310501-----------------------------
INT 31 P - DPMI 0.9+ - ALLOCATE MEMORY BLOCK
AX = 0501h
BX:CX = size in bytes
Return: CF clear if successful
BX:CX = linear address of block
SI:DI = memory block handle for resizing and freeing block
CF set on error
AX = error code (DPMI 1.0+) (8012h-8014h,8016h,8021h)(see AX=0000h)
Notes: no selectors are allocated
the memory block is allocated unlocked (can be locked with AX=0600h)
allocations are often page granular (see AX=0604h)
SeeAlso: AX=0000h,AX=0100h,AX=0500h,AX=0502h,AX=0503h,AX=0504h,AX=0D00h
----------310502-----------------------------
INT 31 P - DPMI 0.9+ - FREE MEMORY BLOCK
AX = 0502h
SI:DI = handle of memory block
Return: CF clear if successful
CF set on error
AX = error code (DPMI 1.0+) (8023h) (see AX=0000h)
Note: any selectors allocated for the memory block must also be freed,
preferably before freeing the memory block
SeeAlso: AX=0001h,AX=0101h,AX=0501h,AX=0D01h
----------310503-----------------------------
INT 31 P - DPMI 0.9+ - RESIZE MEMORY BLOCK
AX = 0503h
BX:CX = new size in bytes (nonzero)
SI:DI = handle of memory block
Return: CF clear if successful
BX:CX = new linear address
SI:DI = new handle of memory block
CF set on error
AX = error code (DPMI 1.0+) (8012h-8014h,8016h,8021h,8023h)
(see AX=0000h)
Notes: any selectors pointing at the block must be updated
the previous memory block handle becomes invalid
an error is returned if the new size is 0
SeeAlso: AX=0102h,AX=0501h,AX=0505h
----------310504-----------------------------
INT 31 P - DPMI 1.0+ - ALLOCATE LINEAR MEMORY BLOCK
AX = 0504h
EBX = page-aligned linear address of memory block (00000000h if any
address is acceptable)
ECX = size in bytes (nonzero)
EDX = flags
bit 0: set to create committed pages instead of uncommitted pages
bits 1-31: reserved (0)
Return: CF clear if successful
EBX = linear address of memory block
ESI = memory block handle
CF set on error
AX = error code (8001h,8012h-8014h,8016h,8021h,8025h)(see AX=0000h)
Note: only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
SeeAlso: AX=0501h,AX=0505h
----------310505-----------------------------
INT 31 P - DPMI 1.0+ - RESIZE LINEAR MEMORY BLOCK
AX = 0505h
ESI = memory block handle
ECX = new size in bytes (nonzero)
EDX = flags
bit 0: create committed pages rather than uncommitted pages
bit 1: segment descriptor update required
ES:EBX -> buffer containing array of WORDs with selectors
EDI = number of selectors in array
bits 2-31: reserved (0)
Return: CF clear if successful
EBX = new linear base address
ESI = new memory block handle
CF set on error
AX = error code (8001h,8012h-8014h,8016h,8021h,8023h)(see AX=0000h)
Notes: only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
the old memory block handle becomes invalid
if EDX bit 1 set and the block's base address is changed, DPMI updates
all descriptors for selectors in the update buffer which fall within
the memory block
SeeAlso: AX=0503h,AX=0504h
----------310506-----------------------------
INT 31 P - DPMI 1.0+ - GET PAGE ATTRIBUTES
AX = 0506h
ESI = memory block handle
EBX = offset in memory block of first page
ECX = number of pages
ES:EDX -> array of WORDs to hold page attributes (see below)
Return: CF clear if successful
buffer filled
CF set on error
AX = error code (8001h,8023h,8025h) (see AX=0000h)
Notes: only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
if EBX is not page-aligned, it will be rounded down
SeeAlso: AX=0504h,AX=0507h,INT 21/AX=251Dh,INT 21/AX=EB00h
Format of page attribute words:
bits 0-2 page type
000 uncommitted
001 committed
010 mapped (see AX=0508h,AX=0509h)
other currently unused
bit 3 page is read/write rather than read-only
bit 4 accessed/dirty bits supplied in bits 5 and 6
bit 5 page has been accessed (only valid if bit 4 set)
bit 6 page has been written (only valid if bit 4 set)
bits 7-15 reserved (0)
----------310507-----------------------------
INT 31 P - DPMI 1.0+ - MODIFY PAGE ATTRIBUTES
AX = 0507h
ESI = memory block handle
EBX = offset in memory block of first page
ECX = number of pages
ES:EDX -> array of WORDs with new page attributes (see AX=0506h)
Return: CF clear if successful
CF set on error
AX = error code (8001h,8002h,8013h,8014h,8021h,8023h,8025h)
(see AX=0000h)
ECX = number of pages which have been set
Notes: only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
if EBX is not page-aligned, it will be rounded down
SeeAlso: AX=0504h,AX=0506h,INT 21/AX=251Eh
----------310508-----------------------------
INT 31 P - DPMI 1.0+ - MAP DEVICE IN MEMORY BLOCK
AX = 0508h
ESI = memory block handle
EBX = page-aligned offset within memory block of page(s) to be mapped
ECX = number of pages to map
EDX = page-aligned physical address of device
Return: CF clear if successful
CF set on error
AX = error code (8001h,8003h,8023h,8025h) (see AX=0000h)
Notes: only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
support of this function is optional; hosts are also allowed to support
the function for some devices but not others
SeeAlso: AX=0504h,AX=0509h,AX=0800h,AX=0801h
----------310509-----------------------------
INT 31 P - DPMI 1.0+ - MAP CONVENTIONAL MEMORY IN MEMORY BLOCK
AX = 0509h
ESI = memory block handle
EBX = page-aligned offset within memory block of page(s) to map
ECX = number of pages to map
EDX = page-aligned linear address of conventional (below 1M) memory
Return: CF clear if successful
CF set on error
AX = error code (8001h,8003h,8023h,8025h) (see AX=0000h)
Notes: only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
support of this function is optional
SeeAlso: AX=0504h,AX=0508h,AX=0801h
----------31050A-----------------------------
INT 31 P - DPMI 1.0+ - GET MEMORY BLOCK SIZE AND BASE
AX = 050AH
SI:DI = memory block handle
Return: CF clear if successful
SI:DI = size in bytes
BX:CX = base address
CF set on error
AX = error code (8023h) (see AX=0000h)
SeeAlso: AX=0501h,AX=0504h
----------31050B-----------------------------
INT 31 P - DPMI 1.0+ - GET MEMORY INFORMATION
AX = 050Bh
ES:(E)DI -> 128-byte buffer for memory information (see below)
Return: CF clear if successful
CF set on error (DPMI 0.9 only)
Note: 16-bit programs use ES:DI, 32-bit programs must use ES:EDI
SeeAlso: AX=0500h
Format of memory information:
Offset Size Description
00h DWORD total allocated bytes of physical memory controlled by host
04h DWORD total allocated bytes of virtual memory controlled by host
08h DWORD total available bytes of virtual memory controlled by host
0Ch DWORD total allocated bytes of virtual memory for curr virtual mach
10h DWORD total available bytes of virtual memory for curr virtual mach
14h DWORD total allocated bytes of virtual memory for current client
18h DWORD total available bytes of virtual memory for current client
1Ch DWORD total locked bytes for current client
20h DWORD maximum locked bytes for current client
24h DWORD highest linear address available to current client
28h DWORD largest available memory block in bytes
2Ch DWORD minimum allocation unit in bytes
30h DWORD allocation alignment unit size in bytes
34h 76 BYTEs reserved (00h)
----------310600-----------------------------
INT 31 P - DPMI 0.9+ - LOCK LINEAR REGION
AX = 0600h
BX:CX = starting linear address
SI:DI = size of region in bytes
Return: CF clear if successful
CF set on error
none of the memory is locked
AX = error code (DPMI 1.0+) (8013h,8017h,8025h) (see AX=0000h)
Notes: pages at beginning and end will be locked if the region overlaps them
may be called multiple times for a given page; the DPMI host keeps a
lock count for each page
SeeAlso: AX=0004h,AX=0601h,INT 21/AX=251Ah,INT 21/AX=EB06h
----------310601-----------------------------
INT 31 P - DPMI 0.9+ - UNLOCK LINEAR REGION
AX = 0601h
BX:CX = starting linear address
SI:DI = size of region in bytes
Return: CF clear if successful
CF set on error
none of the memory is unlocked
AX = error code (DPMI 1.0+) (8002h,8025h) (see AX=0000h)
Notes: pages at beginning and end will be unlocked if the region overlaps them
memory whose lock count has not reached zero remains locked
SeeAlso: AX=0005h,AX=0600h,INT 21/AX=251Bh,INT 21/AX=EB07h
----------310602-----------------------------
INT 31 P - DPMI 0.9+ - MARK REAL MODE REGION AS PAGEABLE
AX = 0602h
BX:CX = starting linear address
SI:DI = size of region in bytes
Return: CF clear if successful
CF set on error
none of the memory is made pageable
AX = error code (DPMI 1.0+) (8002h,8025h) (see AX=0000h)
Notes: must relock all unlocked real mode memory before terminating process
for DPMI 0.9; DPMI 1.0+ automatically relocks real mode memory
pages at beginning and end will be unlocked if the region overlaps them
pageability of real mode pages is binary, not a count
SeeAlso: AX=0600h,AX=0603h
----------310603-----------------------------
INT 31 P - DPMI 0.9+ - RELOCK REAL MODE REGION
AX = 0603h
BX:CX = starting linear address
SI:DI = size of region in bytes
Return: CF clear if successful
CF set on error
none of the memory is relocked
AX = error code (DPMI 1.0+) (8002h,8013h,8025h) (see AX=0000h)
Notes: pages at beginning and end will be relocked if the region overlaps them
pageability of real mode pages is binary, not a count
SeeAlso: AX=0602h
----------310604-----------------------------
INT 31 P - DPMI 0.9+ - GET PAGE SIZE
AX = 0604h
Return: CF clear if successful
BX:CX = page size in bytes
CF set on error
AX = error code (DPMI 1.0+)
8001h unsupported, 16-bit host
----------310700-----------------------------
INT 31 P - DPMI 0.9+ - MARK PAGES AS PAGING CANDIDATES
AX = 0700h
BX:CX = starting linear page number
SI:DI = number of pages to mark as paging candidates
Return: ???
Note: although marked as reserved in versions 0.9 and 1.0 of the DPMI
specification, this function is called by MS Windows TASKMAN,
PROGMAN, and KERNEL
SeeAlso: AX=0701h,AX=0702h
----------310701-----------------------------
INT 31 P - DPMI 0.9+ - DISCARD PAGES
AX = 0701h
BX:CX = starting linear page number
SI:DI = number of pages to discard
Return: ???
Note: although marked as reserved in versions 0.9 and 1.0 of the DPMI
specification, this function is called by MS Windows TASKMAN,
PROGMAN, and KERNEL
SeeAlso: AX=0700h,AX=0703h
----------310702-----------------------------
INT 31 P - DPMI 0.9+ - MARK PAGE AS DEMAND PAGING CANDIDATE
AX = 0702h
BX:CX = starting linear address
SI:DI = number of bytes to mark as paging candidates
Return: CF clear if successful
CF set on error
AX = error code (DPMI 1.0+) (8025h) (see AX=0000h)
Notes: this function is advisory, and does not force immediate paging
partial pages will not be discarded
SeeAlso: AX=0700h,AX=0703h
----------310703-----------------------------
INT 31 P - DPMI 0.9+ - DISCARD PAGE CONTENTS
AX = 0703h
BX:CX = starting linear address
SI:DI = number of bytes to mark as discarded
Return: CF clear if successful
CF set on error
AX = error code (DPMI 1.0+) (8025h) (see AX=0000h)
Notes: this function is advisory, and may be ignored by DPMI implementations
partial pages will not be discarded
SeeAlso: AX=0701h,AX=0702h
----------310800-----------------------------
INT 31 P - DPMI 0.9+ - PHYSICAL ADDRESS MAPPING
AX = 0800h
BX:CX = physical address (should be above 1 MB)
SI:DI = size in bytes
Return: CF clear if successful
BX:CX = linear address which maps the requested physical memory
CF set on error
AX = error code (DPMI 1.0+) (8003h,8021h) (see AX=0000h)
Notes: implementations may refuse this call because it can circumvent protects
the caller must build an appropriate selector for the memory
do not use for memory mapped in the first megabyte
SeeAlso: AX=0002h,AX=0508h,AX=0509h,AX=0801h,INT 21/AX=250Ah,INT 21/AX=EB05h
----------310801-----------------------------
INT 31 P - DPMI 1.0+ - FREE PHYSICAL ADDRESS MAPPING
AX = 0801h
BX:CX = linear address returned by AX=0800h
Return: CF clear if successful
CF set on error
AX = error code (8025h) (see AX=0000h)
Note: should be called at end of access to device mapped with AX=0800h
SeeAlso: AX=0508h,AX=0509h,AX=0800h,INT 21/AX=EB03h
----------310900-----------------------------
INT 31 P - DPMI 0.9+ - GET AND DISABLE VIRTUAL INTERRUPT STATE
AX = 0900h
Return: CF clear
virtual interrupts disabled
AL = 00h if previously disabled
= 01h if previously enabled
AH preserved
Notes: the previous state may be restored simply by executing another INT 31
a CLI instruction may be used if the previous state is unimportant,
but should be assumed to be very slow due to trapping by the host
SeeAlso: AX=0901h,AX=0902h
----------310901-----------------------------
INT 31 P - DPMI 0.9+ - GET AND ENABLE VIRTUAL INTERRUPT STATE
AX = 0901h
Return: CF clear
virtual interrupts enabled
AL = 00h if previously disabled
= 01h if previously enabled
AH preserved
Notes: the previous state may be restored simply by executing another INT 31
a STI instruction may be used if the previous state is unimportant,
but should be assumed to be very slow due to trapping by the host
SeeAlso: AX=0900h,AX=0902h
----------310902-----------------------------
INT 31 P - DPMI 0.9+ - GET VIRTUAL INTERRUPT STATE
AX = 0902h
Return: CF clear
AL = 00h if disabled
= 01h if enabled
Note: should be used rather than PUSHF because that instruction yields the
physical interrupt state rather than the per-client virtualized
interrupt flag
SeeAlso: AX=0900h,AX=0901h
----------310A00-----------------------------
INT 31 P - DPMI 0.9+ - GET VENDOR SPECIFIC API ENTRY POINT
AX = 0A00h
DS:SI / DS:ESI -> case-sensitive ASCIZ vendor name or identifier
Return: CF clear if successful
ES:DI / ES:EDI -> FAR extended API entry point
DS, FS, GS, EAX, EBX, ECX, EDX, ESI, EBP destroyed
CF set on error
AX = error code (DPMI 1.0+) (8001h) (see AX=0000h)
Notes: extended API parameters are vendor-specific
DPMI 1.0+ supports this function solely for backward compatibility; use
INT 2F/AX=168Ah instead
SeeAlso: INT 2F/AX=168Ah
----------310B00-----------------------------
INT 31 P - DPMI 0.9+ - SET DEBUG WATCHPOINT
AX = 0B00h
BX:CX = linear address
DL = size (1,2,4 bytes)
DH = type (00h execute, 01h write, 02h read/write)
Return: CF clear if successful
BX = watchpoint handle
CF set on error
AX = error code (DPMI 1.0+) (8016h,8021h,8025h) (see AX=0000h)
SeeAlso: AX=0212h,AX=0601h
----------310B01-----------------------------
INT 31 P - DPMI 0.9+ - CLEAR DEBUG WATCHPOINT
AX = 0B01h
BX = watchpoint handle
Return: CF clear if successful
CF set on error
AX = error code (DPMI 1.0+) (8023h) (see AX=0000h)
Note: the watchpoint handle is freed
SeeAlso: AX=0B00h
----------310B02-----------------------------
INT 31 P - DPMI 0.9+ - GET STATE OF DEBUG WATCHPOINT
AX = 0B02h
BX = watchpoint handle
Return: CF clear if successful
AX = status flags
bit 0: watch point has been executed since AX=0B00h or AX=0B03h
CF set on error
AX = error code (DPMI 1.0+) (8023h) (see AX=0000h)
SeeAlso: AX=0B00h,AX=0B03h
----------310B03-----------------------------
INT 31 P - DPMI 0.9+ - RESET DEBUG WATCHPOINT
AX = 0B03h
BX = watchpoint handle
Return: CF clear if successful
CF set on error
AX = error code (DPMI 1.0+) (8023h) (see AX=0000h)
SeeAlso: AX=0B02h
----------310C00-----------------------------
INT 31 P - DPMI 1.0+ - INSTALL RESIDENT HANDLER INIT CALLBACK
AX = 0C00h
ES:(E)DI -> resident service provider structure (see below)
Return: CF clear if successful
CF set on error
AX = error code (8015h,8021h,8025h) (see AX=0000h)
Note: calling this function declares an intent to provide resident
protected mode services after terminating with AX=0C01h
SeeAlso: AX=0303h,AX=0C01h
Format of resident service provider structure:
Offset Size Description
00h QWORD descriptor for 16-bit data segment
08h QWORD descriptor for 16-bit code segment (zeros if not supported)
10h WORD offset of 16-bit callback procedure
12h 2 BYTEs reserved
14h QWORD descriptor for 32-bit data segment
1Ch QWORD descriptor for 32-bit code segment (zeros if not supported)
24h DWORD offset of 32-bit callback procedure
----------310C01-----------------------------
INT 31 P - DPMI 1.0+ - TERMINATE AND STAY RESIDENT
AX = 0C01h
BL = return code
DX = number of paragraphs of DOS memory to reserve (0 or >= 6)
Return: never
Notes: should only be used if the program will only provide services to
other DPMI programs
any protected mode memory remains allocated to the program unless
explicitly freed before this call
must first call AX=0C00h or program will simply be terminated
SeeAlso: AX=0C00h,INT 21/AH=31h
----------310D00-----------------------------
INT 31 P - DPMI 1.0+ - ALLOCATE SHARED MEMORY
AX = 0D00h
ES:(E)DI -> shared memory allocation request structure (see below)
Return: CF clear if successful
request structure updated
CF set on error
AX = error code (8012h,8013h,8014h,8016h,8021h) (see AX=0000h)
Note: first 16 bytes of memory block will be initialized to zeros on the
first allocation
SeeAlso: AX=0501h,AX=0D01h,AX=0D02h
Format of shared memory allocation request structure:
Offset Size Description
00h DWORD requested length of shared memory block in bytes
04h DWORD (return) allocated length of block
08h DWORD (return) shared memory handle
0Ch DWORD (return) linear address of memory block
10h 6 BYTEs selector:offset32 of ASCIZ name for memory block
(name max 128 bytes)
16h 2 BYTEs reserved
18h 4 BYTEs reserved (00h)
----------310D01-----------------------------
INT 31 P - DPMI 1.0+ - FREE SHARED MEMORY
AX = 0D01h
SI:DI = shared memory block handle
Return: CF clear if successful
CF set on error
AX = error code (8023h) (see AX=0000h)
Notes: handle becomes invalid after this call
DPMI maintains separate global and virtual machine use counts for each
shared memory block; when the global use counts reaches zero, the
block is finally destroyed
SeeAlso: AX=0502h,AX=0D00h
----------310D02-----------------------------
INT 31 P - DPMI 1.0+ - SERIALIZE SHARED MEMORY
AX = 0D02h
SI:DI = shared memory block handle
DX = flags
bit 0: return immediately rather than suspending if serialization
unavailable
1: shared rather than exclusive serialization
2-15: reserved (0)
Return: CF clear if successful
CF set on error
AX = error code (8004h,8005h,8017h-8019h,8023h) (see AX=0000h)
Notes: an exclusive serialization blocks any other serialization attempts for
the same block by another virtual machine; a shared serialization
blocks attempts at exclusive serialization by another virtual machine
hosts are not required to detect deadlock
a client's interrupt handler can cancel a serialization call which
caused it to block by calling AX=0D03h
SeeAlso: AX=0D00h,AX=0D03h
----------310D03-----------------------------
INT 31 P - DPMI 1.0+ - FREE SERIALIZATION ON SHARED MEMORY
AX = 0D03h
SI:DI = shared memory block handle
DX = flags
bit 0: release shared serialization rather than exclusive serialztn
bit 1: free pending serialization
bits 2-15: reserved (0)
Return: CF clear if successful
CF set on error
AX = error code (8002h,8023h) (see AX=0000h)
SeeAlso: AX=0D00h,AX=0D02h
----------310E00-----------------------------
INT 31 P - DPMI 1.0+ - GET COPROCESSOR STATUS
AX = 0E00h
Return: CF clear
AX = coprocessor status
bit 0: numeric coprocessor enabled for current client
bit 1: client is emulating coprocessor
bit 2: numeric coprocessor is present
bit 3: host is emulating coprocessor instructions
bits 4-7: coprocessor type
0000 none
0010 80287
0011 80387
0100 80486 with numeric coprocessor
other reserved
bits 8-15: not used
Note: supported by 386MAX v6.01, which otherwise only supports DPMI 0.9
SeeAlso: AX=0E01h
----------310E01-----------------------------
INT 31 P - DPMI 1.0+ - SET EMULATION
AX = 0E01h
BX = coprocessor flag bits
bit 0: enable numeric coprocessor for current client
bit 1: client will emulate coprocessor
bits 2-15: not used
Return: CF clear if successful
CF set on error
AX = error code (8026h) (see AX=0000h)
Note: supported by 386MAX v6.01, which otherwise only supports DPMI 0.9
SeeAlso: AX=0E00h
----------32---------------------------------
INT 32 - VIRUS - reportedly used by "Tiny" Viruses
SeeAlso: INT 60"VIRUS"
----------330000-----------------------------
INT 33 - MS MOUSE - RESET DRIVER AND READ STATUS
AX = 0000h
Return: AX = status
0000h hardware/driver not installed
FFFFh hardware/driver installed
BX = number of buttons
0000h other than two
0002h two buttons (many drivers)
0003h Mouse Systems/Logitech three-button mouse
FFFFh two buttons
Notes: to use mouse on a Hercules-compatible monographics card in graphics
mode, you must first set 0040h:0049h to 6 for page 0 or 5 for page 1,
and then call this function. Logitech drivers v5.01 and v6.00
reportedly do not correctly use Hercules graphics in dual-monitor
systems, while version 4.10 does.
the Logitech mouse driver contains the signature string "LOGITECH"
three bytes past the interrupt handler; many of the Logitech mouse
utilities check for this signature.
SeeAlso: AX=0011h,AX=0021h,AX=002Fh,INT 62/AX=007Ah,INT 74
----------330001-----------------------------
INT 33 - MS MOUSE - SHOW MOUSE CURSOR
AX = 0001h
SeeAlso: AX=0002h,INT 16/AX=FFFEh,INT 62/AX=007Bh
----------330002-----------------------------
INT 33 - MS MOUSE - HIDE MOUSE CURSOR
AX = 0002h
Note: multiple calls to hide the cursor will require multiple calls to
function 01h to unhide it.
SeeAlso: AX=0001h,AX=0010h,INT 16/AX=FFFFh,INT 62/AX=007Bh
----------330003-----------------------------
INT 33 - MS MOUSE - RETURN POSITION AND BUTTON STATUS
AX = 0003h
Return: BX = button status
bit 0 left button pressed if 1
bit 1 right button pressed if 1
bit 2 middle button pressed if 1 (Mouse Systems/Logitech mouse)
CX = column
DX = row
SeeAlso: AX=0004h,AX=000Bh,INT 2F/AX=D000h"ZWmous"
----------330004-----------------------------
INT 33 - MS MOUSE - POSITION MOUSE CURSOR
AX = 0004h
CX = column
DX = row
Note: the row and column are truncated to the next lower multiple of the cell
size; however, some versions of the Microsoft documentation
incorrectly state that the coordinates are rounded
SeeAlso: AX=0003h,INT 62/AX=0081h
----------330005-----------------------------
INT 33 - MS MOUSE - RETURN BUTTON PRESS DATA
AX = 0005h
BX = button
0000h left
0001h right
0002h middle (Mouse Systems/Logitech mouse)
Return: AX = button states
bit 0 left button pressed if 1
bit 1 right button pressed if 1
bit 2 middle button pressed if 1 (Mouse Systems/Logitech mouse)
BX = number of times specified button has been pressed since last call
CX = column at time specified button was last pressed
DX = row at time specified button was last pressed
SeeAlso: AX=0006h,INT 62/AX=007Ch
----------330006-----------------------------
INT 33 - MS MOUSE - RETURN BUTTON RELEASE DATA
AX = 0006h
BX = button
0000h left
0001h right
0002h middle (Mouse Systems/Logitech mouse)
Return: AX = button states
bit 0 left button pressed if 1
bit 1 right button pressed if 1
bit 2 middle button pressed if 1 (Mouse Systems/Logitech mouse)
BX = number of times specified button has been released since last call
CX = column at time specified button was last released
DX = row at time specified button was last released
SeeAlso: AX=0005h,INT 62/AX=007Ch
----------330007-----------------------------
INT 33 - MS MOUSE - DEFINE HORIZONTAL CURSOR RANGE
AX = 0007h
CX = minimum column
DX = maximum column
SeeAlso: AX=0008h,AX=0010h,AX=0031h,INT 62/AX=0080h
----------330008-----------------------------
INT 33 - MS MOUSE - DEFINE VERTICAL CURSOR RANGE
AX = 0008h
CX = minimum row
DX = maximum row
SeeAlso: AX=0007h,AX=0010h,AX=0031h,INT 62/AX=0080h
----------330009-----------------------------
INT 33 - MS MOUSE - DEFINE GRAPHICS CURSOR
AX = 0009h
BX = column of cursor hot spot in bitmap (-16 to 16)
CX = row of cursor hot spot (-16 to 16)
ES:DX -> bitmap
16 words screen mask
16 words cursor mask
each word defines the sixteen pixels of a row, low bit
rightmost
SeeAlso: AX=000Ah,AX=0012h,AX=002Ah,INT 62/AX=007Fh
----------33000A-----------------------------
INT 33 - MS MOUSE - DEFINE TEXT CURSOR
AX = 000Ah
BX = hardware/software text cursor
0000h software
CX = screen mask
DX = cursor mask
0001h hardware
CX = start scan line
DX = end scan line
Note: when the software cursor is selected, the char/attribute data at the
current screen position is ANDed with the screen mask and then XORed
with the cursor mask
SeeAlso: AX=0009h,INT 62/AX=007Eh
----------33000B-----------------------------
INT 33 - MS MOUSE - READ MOTION COUNTERS
AX = 000Bh
Return: CX = number of mickeys mouse moved horizontally since last call
DX = number of mickeys mouse moved vertically
Notes: a mickey is the smallest increment the mouse can sense
positive values indicate down/right
SeeAlso: AX=0003h,AX=001Bh,AX=0027h
----------33000C-----------------------------
INT 33 - MS MOUSE - DEFINE INTERRUPT SUBROUTINE PARAMETERS
AX = 000Ch
CX = call mask
bit 0 call if mouse moves
bit 1 call if left button pressed
bit 2 call if left button released
bit 3 call if right button pressed
bit 4 call if right button released
bit 5 call if middle button pressed (Mouse Systems/Logitech mouse)
bit 6 call if middle button released (Mouse Sys/Logitech mouse)
ES:DX -> FAR routine
Notes: when the subroutine is called, it is passed the following values:
AX = condition mask (same bit assignments as call mask)
BX = button state
CX = cursor column
DX = cursor row
SI = horizontal mickey count
DI = vertical mickey count
some versions of the Microsoft documentation incorrectly state that CX
bit 0 means call if mouse cursor moves, and swap the meanings of SI
and DI
SeeAlso: AX=0018h
----------33000D-----------------------------
INT 33 - MS MOUSE - LIGHT PEN EMULATION ON
AX = 000Dh
SeeAlso: AX=000Eh,INT 10/AH=04h
----------33000E-----------------------------
INT 33 - MS MOUSE - LIGHT PEN EMULATION OFF
AX = 000Eh
SeeAlso: AX=000Dh
----------33000F-----------------------------
INT 33 - MS MOUSE - DEFINE MICKEY/PIXEL RATIO
AX = 000Fh
CX = number of mickeys per 8 pixels horizontally (default 8)
DX = number of mickeys per 8 pixels vertically (default 16)
SeeAlso: AX=0013h,AX=001Ah,INT 62/AX=0082h
----------330010-----------------------------
INT 33 - MS MOUSE - DEFINE SCREEN REGION FOR UPDATING
AX = 0010h
CX,DX = X,Y coordinates of upper left corner
SI,DI = X,Y coordinates of lower right corner
Note: mouse cursor is hidden in the specified region, and needs to be
explicitly turned on again
SeeAlso: AX=0001h,AX=0002h,AX=0007h,AX=0010h"Genius MOUSE",AX=0031h
----------330010-----------------------------
INT 33 - Genius MOUSE - DEFINE SCREEN REGION FOR UPDATING
AX = 0010h
ES:DX -> update region list (see below)
Notes: mouse cursor is hidden in the specified region, and needs to be
explicitly turned on again
this version of the call is described in an August 1988 version of the
Genius Mouse programmer's reference; it has been changed to conform
to the Microsoft version shown above by version 9.06 (and possibly
earlier versions)
SeeAlso: AX=0001h,AX=0002h,AX=0007h,AX=0010h"MS MOUSE"
Format of update region list:
Offset Size Description
00h WORD left-most column
02h WORD top-most row
04h WORD right-most column
06h WORD bottom-most row
----------330011-----------------------------
INT 33 - Genius Mouse 9.06 - GET NUMBER OF BUTTONS
AX = 0011h
Return: AX = FFFFh
BX = number of buttons
SeeAlso: AX=0000h
----------330012-----------------------------
INT 33 - MS MOUSE - SET LARGE GRAPHICS CURSOR BLOCK
AX = 0012h
BH = cursor width in words
CH = rows in cursor
BL = horizontal hot spot (-16 to 16)
CL = vertical hot spot (-16 to 16)
ES:DX -> bit map of screen and cursor maps
Return: AX = FFFFh if successful
SeeAlso: AX=0009h,AX=002Ah,AX=0035h
----------330013-----------------------------
INT 33 - MS MOUSE - DEFINE DOUBLE-SPEED THRESHOLD
AX = 0013h
DX = threshold speed in mickeys/second, 0000h = default of 64/second
Note: if speed exceeds threshold, the cursor's on-screen motion is doubled
SeeAlso: AX=000Fh,AX=001Bh,AX=002Ch
----------330014-----------------------------
INT 33 - MS MOUSE - EXCHANGE INTERRUPT SUBROUTINES
AX = 0014h
CX = call mask (see AX=000Ch)
ES:DX -> FAR routine
Return: CX = call mask of previous interrupt routine
ES:DX = FAR address of previous interrupt routine
SeeAlso: AX=000Ch,AX=0018h
----------330015-----------------------------
INT 33 - MS MOUSE - RETURN DRIVER STORAGE REQUIREMENTS
AX = 0015h
Return: BX = size of buffer needed to store driver state
SeeAlso: AX=0016h,AX=0017h,AX=0042h
----------330016-----------------------------
INT 33 - MS MOUSE - SAVE DRIVER STATE
AX = 0016h
BX = size of buffer (see AX=0015h)
ES:DX -> buffer for driver state
Note: although not documented, many drivers appear to require BX on input
SeeAlso: AX=0015h,AX=0017h
----------330017-----------------------------
INT 33 - MS MOUSE - RESTORE DRIVER STATE
AX = 0017h
BX = size of buffer (see AX=0015h)
ES:DX -> buffer containing saved state
Notes: although not documented, many drivers appear to require BX on input
some mouse drivers range-check the values in the saved state based on
the current video mode; thus, the video mode should be restored
before the mouse driver's state is restored
SeeAlso: AX=0015h,AX=0016h
----------330018-----------------------------
INT 33 - MS MOUSE - SET ALTERNATE MOUSE USER HANDLER
AX = 0018h
CX = call mask
bit 0 call if mouse moves
bit 1 call if left button pressed
bit 2 call if left button released
bit 3 call if right button pressed
bit 4 call if right button released
bit 5 call if shift button pressed during event
bit 6 call if ctrl key pressed during event
bit 7 call if alt key pressed during event
ES:DX -> FAR routine
Return: AX = 0018h if successful
= FFFFh on error
Notes: when the subroutine is called, it is passed the following values:
AX = condition mask (same bit assignments as call mask)
BX = button state
CX = cursor column
DX = cursor row
SI = horizontal mickey count
DI = vertical mickey count
up to three handlers can be defined by separate calls to this function
SeeAlso: AX=000Ch,AX=0014h,AX=0019h
----------330019-----------------------------
INT 33 - MS MOUSE - RETURN USER ALTERNATE INTERRUPT VECTOR
AX = 0019h
CX = call mask (see AX=0018h)
Return: BX:DX = user interrupt vector
CX = call mask (0000h if not found)
Note: attempts to find a user event handler (defined by function 18h)
whose call mask matches CX
SeeAlso: AX=0018h
----------33001A-----------------------------
INT 33 - MS MOUSE - SET MOUSE SENSITIVITY
AX = 001Ah
BX = horizontal speed \
CX = vertical speed / (see AX=000Fh)
DX = double speed threshold (see AX=0013h)
SeeAlso: AX=0013h,AX=001Bh,INT 62/AX=0082h
----------33001B-----------------------------
INT 33 - MS MOUSE - RETURN MOUSE SENSITIVITY
AX = 001Bh
Return: BX = horizontal speed
CX = vertical speed
DX = double speed threshold
SeeAlso: AX=000Bh,AX=001Ah
----------33001C-----------------------------
INT 33 - MS MOUSE - SET INTERRUPT RATE
AX = 001Ch
BX = rate
00h no interrupts allowed
01h 30 per second
02h 50 per second
03h 100 per second
04h 200 per second
Notes: only available on InPort mouse
values greater than 4 may cause unpredictable driver behavior
----------33001D-----------------------------
INT 33 - MS MOUSE - DEFINE DISPLAY PAGE NUMBER
AX = 001Dh
BX = display page number
Note: the cursor will be displayed on the specified page
SeeAlso: AX=001Eh
----------33001E-----------------------------
INT 33 - MS MOUSE - RETURN DISPLAY PAGE NUMBER
AX = 001Eh
Return: BX = display page number
SeeAlso: AX=001Dh
----------33001F-----------------------------
INT 33 - MS MOUSE - DISABLE MOUSE DRIVER
AX = 001Fh
Return: AX = 001Fh unsuccessful
FFFFh successful
ES:BX = vector for INT 33h before mouse driver was first installed
Note: restores vectors for Int 10h and Int 71h (8086) or Int 74h (286/386)
if you restore Int 33h to ES:BX, driver will be completely disabled
SeeAlso: AX=0020h
----------330020-----------------------------
INT 33 - MS MOUSE - ENABLE MOUSE DRIVER
AX = 0020h
Return: AX = 0020h unsuccessful (or driver not installed)
FFFFh successful
Note: restores vectors for Int 10h and Int 71h (8086) or Int 74h (286/386)
which were removed by function 1Fh
SeeAlso: AX=001Fh
----------330021-----------------------------
INT 33 - MS MOUSE - SOFTWARE RESET
AX = 0021h
Return: AX = FFFFh if mouse driver installed
BX = number of buttons (FFFFh = two buttons)
0021h if mouse driver not installed
Note: identical to funtion 00h, but does not reset the mouse
SeeAlso: AX=0000h
----------330022-----------------------------
INT 33 - MS MOUSE - SET LANGUAGE FOR MESSAGES
AX = 0022h
BX = language
00h English
01h French
02h Dutch
03h German
04h Swedish
05h Finnish
06h Spanish
07h Portugese
08h Italian
Note: only available on international versions of the driver, US versions
ignore this call
SeeAlso: AX=0023h
----------330023-----------------------------
INT 33 - MS MOUSE - GET LANGUAGE FOR MESSAGES
AX = 0023h
Return: BX = language (see AX=0022h)
Note: the US version of the driver always returns zero
SeeAlso: AX=0022h
----------330024-----------------------------
INT 33 - MS MOUSE v6.26+ - GET SOFTWARE VERSION, MOUSE TYPE, AND IRQ NUMBER
AX = 0024h
Return: AX = FFFFh on error
otherwise,
BH = major version
BL = minor version
CH = type (1=bus, 2=serial, 3=InPort, 4=PS/2, 5=HP)
CL = interrupt (0=PS/2, 2=IRQ2, 3=IRQ3,...,7=IRQ7)
SeeAlso: AX=004Dh,AX=006Dh
----------330025-----------------------------
INT 33 - MS MOUSE v6.26+ - GET GENERAL DRIVER INFORMATION
AX = 0025h
Return: AX = general information
bit 15: driver loaded as device driver rather than TSR
bit 14: driver is newer integrated type
bits 13,12: current cursor type
00 software text cursor
01 hardware text cursor
1X graphics cursor
bits 11-8: interrupt rate (see AX=001Ch)
bits 7-0: count of currently-active Mouse Display Drivers (MDD),
the newer integrated driver type
BX = cursor lock flag for OS/2 to prevent reentrancy problems
CX = mouse code active flag (for OS/2)
DX = mouse driver busy flag (for OS/2)
----------330026-----------------------------
INT 33 - MS MOUSE v6.26+ - GET MAXIMUM VIRTUAL COORDINATES
AX = 0026h
Return: BX = mouse-disabled flag
CX = maximum virtual X (for current video mode)
DX = maximum virtual Y
SeeAlso: AX=0031h
----------330026-----------------------------
INT 33 - Genius Mouse 9.06 - ???
AX = 0026h
Return: CX = 0204h if CX was 0105h on entry, else unchanged
----------330027-----------------------------
INT 33 - MS MOUSE v7.01+ - GET SCREEN/CURSOR MASKS AND MICKEY COUNTS
AX = 0027h
Return: AX = screen-mask value (or hardware cursor scan-line start for v7.02+)
BX = cursor-mask value (or hardware cursor scan-line stop for v7.02+)
CX = horizontal mickeys moved since last call
DX = vertical mickeys moved since last call
SeeAlso: AX=000Bh
----------330028-----------------------------
INT 33 - MS MOUSE v7.0+ - SET VIDEO MODE
AX = 0028h
CX = new video mode (call is NOP if 0000h)
DH = Y font size (00h = default)
DL = X font size (00h = default)
Return: CL = status (00h = successful)
Note: DX is ignored unless the selected video mode supports font size control
SeeAlso: AX=0029h,INT 10/AH=00h
----------330029-----------------------------
INT 33 - MS MOUSE v7.0+ - ENUMERATE VIDEO MODES
AX = 0029h
CX = previous video mode
0000h get first supported video mode
other get next supported mode after mode CX
Return: CX = first/next video mode (0000h = no more video modes)
BS:DX -> description of video mode or 0000h:0000h if none
Notes: the enumerated video modes may be in any order and may repeat
the description string (if available) is terminated by '$' followed by
a NUL byte
SeeAlso: AX=0028h
----------33002A-----------------------------
INT 33 - MS MOUSE v7.02+ - GET CURSOR HOT SPOT
AX = 002Ah
Return: AX = internal counter controlling cursor visibility
BX = cursor hot spot column
CX = cursor hot spot row
DX = mouse type (00h none, 01h bus, 02h serial, 03h InPort, 04h IBM,
05h Hewlett-Packard)
Note: the hot spot location is relative to the upper left corner of the
cursor block and may range from -128 to +127 both horizontally and
vertically
SeeAlso: AX=0009h,AX=0012h,AX=0035h
----------33002B-----------------------------
INT 33 - MS MOUSE v7.0+ - LOAD ACCELERATION PROFILES
AX = 002Bh
BX = active acceleration profile
0001h-0004h or FFFFh to restore default curves
ES:SI -> buffer containing acceleration profile data (see below)
Return: AX = success flag
SeeAlso: AX=002Ch,AX=002Dh,AX=0033h
Format of acceleration profile data:
Offset Size Description
00h BYTE length of acceleration profile 1
01h BYTE length of acceleration profile 2
02h BYTE length of acceleration profile 3
03h BYTE length of acceleration profile 4
04h 32 BYTEs threshold speeds for acceleration profile 1
24h 32 BYTEs threshold speeds for acceleration profile 2
44h 32 BYTEs threshold speeds for acceleration profile 3
64h 32 BYTEs threshold speeds for acceleration profile 4
84h 32 BYTEs speedup factor for acceleration profile 1
(10h = 1.0, 14h = 1.25, 20h = 2.0, etc)
A4h 32 BYTEs speedup factor for acceleration profile 2
(10h = 1.0, 14h = 1.25, 20h = 2.0, etc)
C4h 32 BYTEs speedup factor for acceleration profile 3
(10h = 1.0, 14h = 1.25, 20h = 2.0, etc)
E4h 32 BYTEs speedup factor for acceleration profile 4
(10h = 1.0, 14h = 1.25, 20h = 2.0, etc)
104h 16 BYTEs name of acceleration profile 1 (blank-padded)
114h 16 BYTEs name of acceleration profile 2 (blank-padded)
124h 16 BYTEs name of acceleration profile 3 (blank-padded)
134h 16 BYTEs name of acceleration profile 4 (blank-padded)
Note: unused bytes in the threshold speed fields are filled with 7Fh and
unused bytes in the speedup factor fields are filled with 10h
----------33002C-----------------------------
INT 33 - MS MOUSE v7.0+ - GET ACCELERATION PROFILES
AX = 002Ch
Return: AX = status (0000h success)
BX = currently-active acceleration profile
ES:SI -> acceleration profile data (see AX=002Bh)
SeeAlso: AX=002Bh,AX=002Dh,AX=0033h
----------33002D-----------------------------
INT 33 - MS MOUSE v7.0+ - SELECT ACCELERATION PROFILE
AX = 002Dh
BX = acceleration level
0001h-0004h to set profile, or FFFFh to get current profile
Return: AX = status
0000h successful
ES:SI -> 16-byte blank-padded name of acceleration profile
FFFEh invalid acceleration curve number
ES:SI destroyed
BX = active acceleration curve number
SeeAlso: AX=0013h,AX=002Bh,AX=002Ch,AX=002Eh
----------33002E-----------------------------
INT 33 - MS MOUSE v8.10+ - SET ACCELERATION PROFILE NAMES
AX = 002Eh
BL = flag (if nonzero, fill ES:SI buffer with default names on return)
ES:SI -> 64-byte buffer for profile names (16 bytes per name)
Return: AX = status (0000h success)
ES:SI buffer filled with default names if BL nonzero on entry
Note: not supported by Logitech driver v6.10
SeeAlso: AX=002Ch,AX=002Dh,AX=012Eh,AX=022Eh
----------33002F-----------------------------
INT 33 - MS MOUSE v7.02+ - MOUSE HARDWARE RESET
AX = 002Fh
Return: AX = status
Note: invoked by mouse driver v8.20 on being called with INT 2F/AX=530Bh
SeeAlso: INT 2F/AH=53h
----------330030-----------------------------
INT 33 - MS MOUSE v7.04+ - GET/SET BallPoint INFORMATION
AX = 0030h
CX = command
0000h get status of BallPoint device
other set rotation angle and masks
BX = rotation angle (-32768 to 32767 degrees)
CH = primary button mask
CL = secondary button mask
Return: AX = button status (FFFFh if no BallPoint)
bit 5: button 1
bit 4: button 2
bit 3: button 3
bit 2: button 4
other: zero
BX = rotation angle (0-360 degrees)
CH = primary button mask
CL = secondary button mask
----------330031-----------------------------
INT 33 - MS MOUSE v7.05+ - GET CURRENT MINIMUM/MAXIMUM VIRTUAL COORDINATES
AX = 0031h
Return: AX = virtual X minimum
BX = virtual Y minimum
CX = virtual X maximum
DX = virtual Y maximum
Note: the minimum and maximum values are those set by AX=0007h and AX=0008h;
the default is minimum = 0 and maximum = absolute maximum
(see AX=0026h)
SeeAlso: AX=0007h,AX=0008h,AX=0010h,AX=0026h
----------330032-----------------------------
INT 33 - MS MOUSE v7.05+ - GET ACTIVE ADVANCED FUNCTIONS
AX = 0032h
Return: AX = active function flags (FFFFh for v8.10)
bit 15: function 0025h supported
bit 14: function 0026h supported
...
bit 0: function 0034h supported
BX = ??? (0000h) officially unused
CX = ??? (E000h) officially unused
DX = ??? (0000h) officially unused
----------330033-----------------------------
INT 33 - MS MOUSE v7.05+ - GET SWITCH SETTINGS AND ACCELERATION PROFILE DATA
AX = 0033h
CX = size of buffer
0000h get required buffer size
Return: AX = 0000h
CX = required size (0154h for Logitech v6.10, 0159h
for MS v8.10-8.20)
other
ES:DX -> buffer of CX bytes
Return: AX = 0000h
CX = number of bytes returned
ES:DX buffer filled (see below)
SeeAlso: AX=002Bh
Format of data buffer:
Offset Size Description
00h BYTE mouse type
01h BYTE current language
02h BYTE horizontal sensitivity (00h-64h)
03h BYTE vertical sensitivity (00h-64h)
04h BYTE double-speed threshold (00h-64h)
05h BYTE ballistic curve (01h-04h)
06h BYTE interrupt rate (01h-04h)
07h BYTE cursor override mask
08h BYTE laptop adjustment
09h BYTE memory type (00h-02h)
0Ah BYTE SuperVGA support (00h,01h)
0Bh BYTE rotation angle
0Ch BYTE ???
0Dh BYTE primary button (01h-04h)
0Eh BYTE secondary button (01h-04h)
0Fh BYTE click lock enabled (00h,01h)
10h 324 BYTEs acceleration profile data (see AX=002Bh)
154h 5 BYTEs ??? (Microsoft driver, but not Logitech)
----------330034-----------------------------
INT 33 - MS MOUSE v8.0+ - GET INITIALIZATION FILE
AX = 0034h
Return: AX = status (0000h successful)
ES:DX -> ASCIZ initialization (.INI) file name
----------330035-----------------------------
INT 33 - MS MOUSE v8.10+ - LCD SCREEN LARGE POINTER SUPPORT
AX = 0035h
BX = function
FFFFh get current settings
Return: AX = 0000h
BH = style (see below)
BL = size (see below)
CH = threshold
CL = active flag (00h disabled, 01h enabled)
DX = delay
other
BH = style (00h normal, 01h reverse, 02h transparent)
BL = size (00h small "1", 01h medium "1.5", 02h large "2")
CH = threshold (00h-64h)
CL = active flag (00h disable size change, 01h enable)
DX = delay (0000h-0064h)
Return: AX = 0000h
Note: not supported by Logitech driver v6.10
SeeAlso: AX=0012h,AX=002Ah
----------330042-----------------------------
INT 33 - PCMOUSE - GET MSMOUSE STORAGE REQUIREMENTS
AX = 0042h
Return: AX = FFFFh successful
BX = buffer size in bytes for functions 50h and 52h
= 0000h MSMOUSE not installed
= 0042h functions 42h, 50h, and 52h not supported
Note: this function is also supported by the Genius Mouse 9.06 driver
SeeAlso: AX=0015h,AX=0050h,AX=0052h
----------330043-----------------------------
INT 33 - Mouse Systems MOUSE DRIVER v7.01 - CONFIGURE MOUSE???
AX = 0043h
CX:BX -> ??? buffer (see below)
DL = ???
Return: ???
Notes: also calls routines for INT 33/AX=0053h and INT 33/AX=004Fh
this function is also supported by the Genius Mouse 9.06 driver
Format of buffer:
Offset Size Description
00h WORD I/O port address
02h BYTE ???
03h BYTE interrupt number
04h BYTE interrupt mask for interrupt controller
05h 5 BYTEs ???
----------330044CXCDEF-----------------------
INT 33 - Mouse Systems MOUSE DRIVER v7.01 - TOGGLE ???
AX = 0044h
CX = CDEFh
Return: AX = new state of ???
Note: this function is also supported by the Genius Mouse 9.06 driver
SeeAlso: AX=0045h
----------330045CXCDEF-----------------------
INT 33 - Mouse Systems MOUSE DRIVER v7.01 - TOGGLE ???
AX = 0045h
CX = CDEFh
Return: AX = new state of ???
Note: this function is also supported by the Genius Mouse 9.06 driver
SeeAlso: AX=0044h
----------330047-----------------------------
INT 33 - Mouse Systems MOUSE DRIVER v7.01 - SET BUTTON ASSIGNMENTS
AX = 0047h
ES:BX -> button assignments (3 bytes, combinations of "L", "M", "R")
Return: ???
Note: also supported by Genius Mouse 9.06 driver
SeeAlso: AX=0067h
----------330048BXCDEF-----------------------
INT 33 - Mouse Systems MOUSE DRIVER v7.01 - GET ???
AX = 0048h
BX = CDEFh
Return: CX = ???
BH = ???
BL = ??? (if 50h, driver is using PS/2 pointing device BIOS interface)
Note: also supported by Genius Mouse 9.06 driver
----------33004B-----------------------------
INT 33 - Z-NIX MOUSE DRIVER v7.04d - INSTALLATION CHECK
AX = 004Bh
Return: ES:DI -> signature/description string if installed
Note: the signature string in v7.04d is
"Z-NIX;BUS,AUX,Serial 3-byte and 5-byte Mouse Driver;ZMOUSE;v7.04d"
----------33004CBXCDEF-----------------------
INT 33 - Mouse Systems MOUSE DRIVER v7.01 - SET ??? FLAG
AX = 004Ch
BX = CDEFh
Note: also supported by Genius Mouse 9.06
SeeAlso: AX=006Ch
----------33004D-----------------------------
INT 33 - MS MOUSE - RETURN POINTER TO COPYRIGHT STRING
AX = 004Dh
Return: ES:DI -> copyright message "*** This is Copyright 1983 Microsoft"
Notes: also supported by Logitech, Kraft, Genius Mouse, and Mouse Systems
mouse drivers
in the Genius Mouse 9.06 driver, the ASCIZ signature "KYE" immediately
follows the above copyright message (KYE Corp. manufactures the
driver)
SeeAlso: AX=0024h,AX=006Dh
----------33004F-----------------------------
INT 33 - Mouse Systems MOUSE DRIVER v7.01 - ENABLE MOUSE
AX = 004Fh
Return: nothing
Note: also supported by Genius Mouse 9.06
SeeAlso: AX=0043h,AX=0053h
----------330050-----------------------------
INT 33 - PCMOUSE - SAVE MSMOUSE STATE
AX = 0050h
BX = buffer size (ignored by some driver versions)
ES:DX -> buffer
Return: AX = FFFFh if successful
Notes: the buffer must be large enough to hold the entire state, or following
data will be overwritten by state data in versions which ignore BX;
use INT 33/AX=0042h to get the required size
this function is also supported by the Genius Mouse 9.06 driver
SeeAlso: AX=0042h,AX=0052h
----------330052-----------------------------
INT 33 - PCMOUSE - RESTORE MSMOUSE STATE
AX = 0052h
BX = buffer size (ignored by some driver versions)
ES:DX -> buffer
Return: AX = FFFFh if successful
Note: also supported by Genius Mouse 9.06 driver
SeeAlso: AX=0050h
----------330053-----------------------------
INT 33 - Mouse Systems MOUSE DRIVER v7.01 - DISABLE MOUSE
AX = 0053h
Return: nothing
Note: also supported by Genius Mouse 9.06
SeeAlso: AX=0043h,AX=004Fh
----------330054CXCDEF-----------------------
INT 33 - Mouse Systems MOUSE DRIVER v7.01 - SELECT ULTRARES ACCELERATION LEVEL
AX = 0054h
CX = CDEFh
BX = ??? (NOP if <= 0000h)
Return: ???
Note: this function is also supported by the Genius Mouse 9.06 driver
SeeAlso: AX=005Ah
----------330055-----------------------------
INT 33 - Kraft Mouse - GET ???
AX = 0055h
Return: CX = ???
DX = ???
ES = ???
----------330058-----------------------------
INT 33 - Mouse Systems MOUSE DRIVER v7.01 - ???
AX = 0058h
Return: AX = CS of driver
CX:BX = original INT 33 vector
DX = ???
Note: this function is also supported by the Genius Mouse 9.06 driver
----------33005A-----------------------------
INT 33 - Mouse Systems MOUSE DRIVER v7.01 - SET ULTRARES ACCELERATIONS
AX = 005Ah
CX = number of WORDs to copy (max 0014h, but not range-checked)
DX:SI -> buffer containing thresholds??? (CX words)
DX:BX -> buffer containing acceleration values???
(9*14h words, only first CX of each 14h used)
???
Return: CF clear
???
Note: this function is also supported by Genius Mouse 9.06
SeeAlso: AX=0054h
----------330061BXCDEF-----------------------
INT 33 - Mouse Systems MOUSE DRIVER v7.01 - ???
AX = 0061h
BX = CDEFh
Return: CX = ???
Note: also supported by Genius Mouse 9.06
----------330067-----------------------------
INT 33 - Mouse Systems MOUSE DRIVER v7.01 - GET MOUSE BUTTONS???
AX = 0067h
Return: BL = number of buttons???
Note: also supported by Genius Mouse 9.06
SeeAlso: AX=0047h
----------33006CBXCDEF-----------------------
INT 33 - Mouse Systems MOUSE DRIVER v7.01 - CLEAR ??? FLAG
AX = 006Ch
BX = CDEFh
Note: also supported by Genius Mouse 9.06
SeeAlso: AX=004Ch
----------33006D-----------------------------
INT 33 - MS MOUSE - GET VERSION STRING
AX = 006Dh
Return: ES:DI -> Microsoft version number of resident driver (see below)
Notes: also supported by Logitech, Mouse Systems, Kraft, and Genius mouse
drivers
the Mouse Systems 7.01 and Genius Mouse 9.06 drivers report their
Microsoft version as 7.00 even though they do not support any of the
functions from 0025h through 002Dh supported by the MS 7.00 driver
(the Genius Mouse driver supports function 0026h, but it differs
from the Microsoft function)
SeeAlso: AX=0024h,AX=004Dh,AX=266Ch
Format of Microsoft version number:
Offset Size Description
00h BYTE major version
01h BYTE minor version (BCD)
----------330070BXABCD-----------------------
INT 33 - Mouse Systems MOUSE DRIVER - POPUP.COM - INSTALLATION CHECK
AX = 0070h
BX = ABCDh
Return: AX = ABCDh if installed
BX:CX -> data structure (see below)
Notes: this function is also supported by the Genius Mouse 9.06 driver
the v7.01 POPUP.COM and menu drivers also check for the signature
CDh ABh BAh DCh at offset -2Ch from the interrupt handler
if POPUP is not loaded, the returned data structure contains the proper
signature at offset 00h, but not at offset 08h
Format of data structure:
Offset Size Description
00h WORD signature ABCDh
02h DWORD pointer to info structure???
06h 2 BYTEs ???
08h WORD signature ABCDh
Format of info structure:
Offset Size Description
00h WORD driver version
02h 8 BYTEs ???
0Ah WORD segment of ???
???
----------330072BXABCD-----------------------
INT 33 - Mouse Systems MOUSE DRIVER v7.01 - ???
AX = 0072h
BX = ABCDh
Return: ???
Note: this function is also supported by the Genius Mouse 9.06 driver
----------330073BXCDEF-----------------------
INT 33 - Mouse Systems MOUSE DRIVER v7.01 - GET BUTTON ASSIGNMENTS
AX = 0073h
BX = CDEFh
ES:DX -> 3-byte buffer for button assignments
Return: CX = number of buttons???
ES:DX buffer filled (default is "LMR")
Note: also supported by Genius Mouse 9.06
SeeAlso: AX=0067h
----------33012E-----------------------------
INT 33 - MS MOUSE v8.10+ - ???
AX = 012Eh
BL = ???
Return: AX = 0000h
Note: not supported by Logitech driver v6.10
SeeAlso: AX=002Eh,AX=022Eh
----------33022E-----------------------------
INT 33 - MS MOUSE v8.10+ - ???
AX = 022Eh
BL = ???
Return: AX = 0000h
Note: not supported by Logitech driver v6.10
SeeAlso: AX=002Eh,AX=012Eh
----------33136C-----------------------------
INT 33 - LOGITECH MOUSE v6.10+ - ???
AX = 136Ch
BX = ???
Return: AX = ???
BX = ???
----------33146C-----------------------------
INT 33 - LOGITECH MOUSE v6.10+ - GET/SET ???
AX = 146Ch
BL = function
00h set ???
BH = new value (zero/nonzero to clear/set)
else get ???
Return: ???
----------33156C-----------------------------
INT 33 - LOGITECH MOUSE v6.10+ - GET SIGNATURE AND VERSION STRINGS
AX = 156Ch
Return: ES:DI -> signature "LOGITECH MOUSE DRIVER"
ES:SI -> version string, terminated with CRLF
----------33166C-----------------------------
INT 33 - LOGITECH MOUSE v6.10+ - ???
AX = 166Ch
BL = ???
00h ???
01h ???
other ???
BH = new value of ???
Return: AX = FFFFh
----------33176C-----------------------------
INT 33 - LOGITECH MOUSE v6.10+ - ???
AX = 176Ch
???
Return: ???
----------33186C-----------------------------
INT 33 - LOGITECH MOUSE v6.10+ - ???
AX = 186Ch
???
Return: ???
----------33196C-----------------------------
INT 33 - LOGITECH MOUSE v6.10+ - ???
AX = 196Ch
???
Return: ???
----------331A6C-----------------------------
INT 33 - LOGITECH MOUSE v6.10+ - GET ???
AX = 1A6Ch
Return: AX = FFFFh
BX = ???
CX = ???
SeeAlso: AX=1B6Ch
----------331B6C-----------------------------
INT 33 - LOGITECH MOUSE v6.10+ - SET ???
AX = 1B6Ch
BX = new value for ??? (0000h-0003h)
Return: AX = FFFFh
SeeAlso: AX=1A6Ch
----------331C6C-----------------------------
INT 33 - LOGITECH MOUSE v6.10+ - ???
AX = 1C6Ch
BX = ???
<42h ???
=42h ???
>42h ???
ES:DI -> ???
Return: AX = ???
----------331D6C-----------------------------
INT 33 - LOGITECH MOUSE - GET COMPASS PARAMETER
AX = 1D6Ch
Return: BX = direction (0=north, 1=south, 2=east, 3=west)
SeeAlso: AX=1E6Ch
----------331E6C-----------------------------
INT 33 - LOGITECH MOUSE - SET COMPASS PARAMETER
AX = 1E6Ch
BX = direction (0=north, 1=south, 2=east, 3=west)
SeeAlso: AX=1D6Ch
----------331F6C-----------------------------
INT 33 - LOGITECH MOUSE - GET BALLISTICS INFORMATION
AX = 1F6Ch
Return: BX = 0=off, 1=on
CX = 1=low, 2=high
SeeAlso: AX=002Ch,AX=236Ch
----------33206C-----------------------------
INT 33 - LOGITECH MOUSE - SET LEFT OR RIGHT PARAMETER
AX = 206Ch
BX = parameter (00h = right, FFh = left)
SeeAlso: AX=216Ch
----------33216C-----------------------------
INT 33 - LOGITECH MOUSE - GET LEFT OR RIGHT PARAMETER
AX = 216Ch
Return: BX = parameter (00h = right, FFh = left)
SeeAlso: AX=206Ch
----------33226C-----------------------------
INT 33 - LOGITECH MOUSE - REMOVE DRIVER FROM MEMORY
AX = 226Ch
Note: this only frees memory; does not restore hooked interrupts
----------33236C-----------------------------
INT 33 - LOGITECH MOUSE - SET BALLISTICS INFORMATION
AX = 236Ch
BX = 0=off, 1=on
CX = 1=low, 2=high
SeeAlso: AX=002Ch,AX=1F6Ch
----------33246C-----------------------------
INT 33 - LOGITECH MOUSE - GET PARAMETERS AND RESET SERIAL MOUSE
AX = 246Ch
ES:DX -> parameter table buffer (see below)
Return: AX = FFFFh if driver installed for serial mouse
SeeAlso: AX=0000h,AX=256Ch
Format of parameter table:
Offset Size Description
00h WORD baud rate divided by 100 (serial mouse only)
02h WORD emulation (serial mouse only)
04h WORD report rate (serial mouse only)
06h WORD firmware revision (serial mouse only)
08h WORD 0 (serial mouse only)
0Ah WORD port (serial mouse only)
0Ch WORD physical buttons
0Eh WORD logical buttons
----------33256CBX00h -----------------------
INT 33 - LOGITECH MOUSE - SET PARAMETERS
AX = 256Ch
BX = 00h set baud rate (serial mouse only)
CX = rate (0=1200, 1=2400, 2=4800, 3=9600)
= 01h set emulation (serial mouse only)
CX = emulation
0 = 5 byte packed binary
1 = 3 byte packed binary
2 = hexadecimal
3 = relative bit pad
4 = not supported
5 = MM Series
6 = not supported
7 = Microsoft
= 02h set report rate (serial mouse only)
CX = rate (0=10, 1=20, 2=35, 3=50, 4=70, 5=100, 6=150)
= 03h set port (serial mouse only)
CX = port (1, 2)
= 04h set mouse logical buttons
CX = buttons (2, 3)
Return: AX = FFFFh if driver installed for serial mouse
SeeAlso: AX=246Ch,AX=276Ch
----------33266C-----------------------------
INT 33 - LOGITECH MOUSE - GET VERSION???
AX = 266Ch
Return: BX = 'SS'
CH = '4' major version number
CL = '1' minor version number
SeeAlso: AX=006Dh
----------33276C-----------------------------
INT 33 - LOGITECH MOUSE - ??? Tries MMSeries, Baud 2400
AX = 276Ch
SeeAlso: AX=256Ch
----------333000-----------------------------
INT 33 - Smooth Mouse Driver, PrecisePoint - INSTALLATION CHECK
AX = 3000h
Return: AX = FFFFh if installed
BX = version number (BH = major, BL = minor)
Program: SMD is a programmer's library by Andy Hakim which provides a
graphics-style mouse cursor in text mode. PrecisePoint is an
SMD-based TSR which replaces the block mouse cursor in text
applications.
SeeAlso: AX=0000h,AX=3001h,AX=3003h
----------333001-----------------------------
INT 33 - Smooth Mouse Driver, PrecisePoint - ENABLE SMOOTH MOUSE
AX = 3001h
Return: AX = status (0000h = disabled, 0001h = enabled)
Note: SMD remains disabled if running under Desqview or in graphics mode
SeeAlso: AX=0001h,AX=0002h,AX=3002h
----------333002-----------------------------
INT 33 - Smooth Mouse Driver, PrecisePoint - DISABLE SMOOTH MOUSE
AX = 3002h
Return: AX = status (0000h = disabled, 0001h = enabled)
SeeAlso: AX=0001h,AX=0002h,AX=3000h,AX=3001h
----------333003-----------------------------
INT 33 - Smooth Mouse Driver, PrecisePoint - GET INFORMATION
AX = 3003h
BL = data structure selector
00h Primary Bitmap (used for 25 line mode)
01h Secondary Bitmap (used for 43/50 line modes)
02h Sacrifice Character Map
03h Program Information
Return: ES:DI -> selected data structure
SeeAlso: AX=3000h
Format of Primary/Secondary Bitmap [SMD_BITMAP_STRUCT]
Offset Size Description
00h BYTE vertical size of bitmap (00h - 10h)
01h BYTE horizontal size of bitmap (00h - 10h)
02h BYTE vertical hotspot position (00h - 10h)
03h BYTE horizontal hotspot position (00h - 10h)
04h 16 WORDs cursor bitmap data
14h 16 WORDs screen bitmap data
Format of Sacrifice Character Map [SMD_SMAP_STRUCT]
Offset Size Description
00h BYTE bytes are character values (00h-FFh) used in place of the
01h BYTE actual character for the corresponding position on the screen
02h BYTE +--------------+ occupied by part or all of the mouse
03h BYTE | 0h | 1h | 2h | cursor
04h BYTE |----+----+----|
05h BYTE | 3h | 4h | 5h |
06h BYTE |----+----+----|
07h BYTE | 6h | 7h | 8h |
08h BYTE +--------------+
Format of Program Information [SMD_INFO_STRUCT]
Offset Size Description
00h WORD segment of old interrupt 33h handler
02h WORD offset of old interrupt 33h handler
04h WORD PSP of SMD
06h BYTE ENABLE/DISABLE manual setting status
07h BYTE ENABLE/DISABLE internal usage status
----------33---------------------------------
INT 33 - Smooth Mouse Driver, PrecisePoint - RESERVED FUTURE EXPANSION
AX = 3004
SeeAlso: AX=3000h
----------33---------------------------------
INT 33 - Smooth Mouse Driver, PrecisePoint - RESERVED FUTURE EXPANSION
AX = 3005
SeeAlso: AX=3000h
----------334F00-----------------------------
INT 33 - LOGITECH MOUSE v6.10+ - GET ???
AX = 4F00h
Return: AX = 004Fh if supported
BX = ???
ES:DI -> ???
SeeAlso: AX=4F01h
----------334F01-----------------------------
INT 33 - LOGITECH MOUSE v6.10+ - ???
AX = 4F01h
ES = ???
Return: AX = 004Fh if supported
ES:DI -> ???
SeeAlso: AX=4F00h
----------34---------------------------------
INT 34 - FLOATING POINT EMULATION - OPCODE D8h
Desc: this interrupt is used to emulate floating-point instructions with
an opcode of D8h
Note: the floating-point emulators in Borland and Microsoft languages and
Lahey FORTRAN use this interrupt
SeeAlso: INT 35,INT 3E
----------35---------------------------------
INT 35 - FLOATING POINT EMULATION - OPCODE D9h
Desc: this interrupt is used to emulate floating-point instructions with
an opcode of D9h
Note: the floating-point emulators in Borland and Microsoft languages and
Lahey FORTRAN use this interrupt
SeeAlso: INT 34,INT 36
----------36---------------------------------
INT 36 - FLOATING POINT EMULATION - OPCODE DAh
Desc: this interrupt is used to emulate floating-point instructions with
an opcode of DAh
Note: the floating-point emulators in Borland and Microsoft languages and
Lahey FORTRAN use this interrupt
SeeAlso: INT 35,INT 37
----------37---------------------------------
INT 37 - FLOATING POINT EMULATION - OPCODE DBh
Desc: this interrupt is used to emulate floating-point instructions with
an opcode of DBh
Note: the floating-point emulators in Borland and Microsoft languages and
Lahey FORTRAN use this interrupt
SeeAlso: INT 36,INT 38
----------38---------------------------------
INT 38 - FLOATING POINT EMULATION - OPCODE DCh
Desc: this interrupt is used to emulate floating-point instructions with
an opcode of DCh
Note: the floating-point emulators in Borland and Microsoft languages and
Lahey FORTRAN use this interrupt
SeeAlso: INT 37,INT 39
----------3802-------------------------------
INT 38 - PC-MOS/386 v3.0 - GET MOS INTERNAL DATA POINTER
AH = 02h
Return: AX = 0000h
ES:BX -> ??? internal data structure
Program: PC-MOS/386 is a multitasking/multiuser MSDOS-compatible operating
system by Software Links, Inc.
SeeAlso: AH=04h,AH=10h,INT 21/AX=3000h,INT D4
----------3804-------------------------------
INT 38 - PC-MOS/386 v3.0 - GET TASK CONTROL BLOCK
AH = 04h
Return: ES = segment of Task Control Block (TCB) (see below)
SeeAlso: AH=02h,INT D4
Format of Task Control Block:
Offset Size Description
00h 2 BYTEs signature "HT"
02h 23 BYTEs ???
19h BYTE task time slice
1Ah 7 BYTEs ???
21h 11 BYTEs name of currently executing task
2Ch 79 BYTEs ???
7Bh 4 BYTEs user name
7Fh BYTE current output class
80h 7 BYTEs protection access rights, 2 bits per class (writeable!)
???
----------380703-----------------------------
INT 38 - PC-MOS/386 v3.0 - WAIT FOR KEYPRESS OR TIMEOUT
AX = 0703h
CX = timeout (in seconds???)
Return: AH bit 0 set if key pressed, clear otherwise
SeeAlso: INT 16/AH=00h,INT D4
----------3810-------------------------------
INT 38 - PC-MOS/386 v3.0 - ENTER NATIVE 386 EXECUTION MODE
AH = 10h
CX = NCA (???) length in bytes (at least 1024???)
DX = NCA segment
Return: in protected mode
all segment registers converted to appropriate selectors
Note: MSDOS calls are available in protected mode
SeeAlso: AH=11h,AH=12h,INT 2F/AX=1687h,INT 67/AX=DE0Ch,INT D4
----------3811-------------------------------
INT 38 - PC-MOS/386 v3.0 - ALLOCATE NATIVE MODE MEMORY BLOCK
AH = 11h
EBX = block length
Return: ES = selector for allocated block
SeeAlso: AH=10h,AH=12h,INT D4
----------3812-------------------------------
INT 38 - PC-MOS/386 v3.0 - FREE NATIVE MODE MEMORY BLOCK
AH = 12h
ES = selector for block to free
SeeAlso: AH=10h,AH=11h,INT D4
----------39---------------------------------
INT 39 - FLOATING POINT EMULATION - OPCODE DDh
Desc: this interrupt is used to emulate floating-point instructions with
an opcode of DDh
Note: the floating-point emulators in Borland and Microsoft languages and
Lahey FORTRAN use this interrupt
SeeAlso: INT 38,INT 3A
----------3A---------------------------------
INT 3A - FLOATING POINT EMULATION - OPCODE DEh
Desc: this interrupt is used to emulate floating-point instructions with
an opcode of DEh
Note: the floating-point emulators in Borland and Microsoft languages and
Lahey FORTRAN use this interrupt
SeeAlso: INT 39,INT 3B
----------3B---------------------------------
INT 3B - FLOATING POINT EMULATION - OPCODE DFh
Desc: this interrupt is used to emulate floating-point instructions with
an opcode of DFh
Note: the floating-point emulators in Borland and Microsoft languages and
Lahey FORTRAN use this interrupt
SeeAlso: INT 3A,INT 3C
----------3C---------------------------------
INT 3C - FLOATING POINT EMULATION - INSTRUCTIONS WITH SEGMENT OVERRIDE
Notes: the floating-point emulators in Borland and Microsoft languages and
Lahey FORTRAN use this interrupt
the generated code is CD 3C xy mm ....
where xy is a modified ESC instruction and mm is the modR/M byte.
The xy byte appears to be encoded as
s s 0 1 1 x x x or s s 0 0 0 x x x
where "ss" specifies the segment override:
00 -> DS:
01 -> SS:
10 -> CS:
11 -> ES:
SeeAlso: INT 3B,INT 3D
----------3D---------------------------------
INT 3D - FLOATING POINT EMULATION - STANDALONE FWAIT
Notes: the floating-point emulators in Borland and Microsoft languages and
Lahey FORTRAN use this interrupt
this vector is modified but not restored by Direct Access v4.0, and
may be left dangling by other programs written with the same version
of compiled BASIC
SeeAlso: INT 3C,INT 3E
----------3E---------------------------------
INT 3E - FLOATING POINT EMULATION - Borland LANGUAGES "SHORTCUT" CALL
Notes: the two bytes following the INT 3E instruction are the subcode and
a NOP (90h), except for subcodes DCh and DEh, where the second byte
is a register count (01h-08h)
this vector is modified but not restored by Direct Access v4.0, and
may be left dangling by other programs written with the same version
of compiled BASIC
SeeAlso: INT 3D
Subcode Function
DCh load 8086 stack with 8087 registers; overwrites the 10*N bytes at the
top of the stack prior to the INT 3E with the 8087 register contents
DEh load 8087 registers from top of 8086 stack; ST0 is furthest from top
of 8086 stack
E0h round TOS and R1 to single precision, compare, pop twice
returns AX=8087 status word, FLAGS=8087 condition bits
E2h round TOS and R1 to double precision, compare, pop twice
returns AX=8087 status word, FLAGS=8087 condition bits
Note: buggy in TPas5.5, because it sets the 8087 precision control
field to the undocumented value 01h; this results in actually
rounding to single precision
E4h compare TOS/R1 with two POP's
returns FLAGS=8087 condition bits
E6h compare TOS/R1 with POP
returns FLAGS=8087 condition bits
E8h FTST (check TOS value)
returns FLAGS=8087 condition bits
EAh FXAM (check TOS value)
returns AX=8087 status word
ECh sine(ST0)
EEh cosine(ST0)
F0h tangent(ST0)
F2h arctangent(ST0)
F4h ST0 = ln(ST0)
F6h ST0 = log2(ST0)
F8h ST0 = log10(ST0)
FAh ST0 = e**ST0
FCh ST0 = 2**ST0
FEh ST0 = 10**ST0
----------3F---------------------------------
INT 3F - Overlay manager interrupt (Microsoft LINK.EXE, Borland TLINK VROOMM)
Notes: INT 3F is the default, and may be overridden while linking
this vector is modified but not restored by Direct Access v4.0, and
may be left dangling by other programs written with the same version
of compiled BASIC
SeeAlso: INT FE"OVERLAY"
----------3F---------------------------------
INT 3F - Microsoft Dynamic Link Library manager
SeeAlso: INT 21/AH=4Bh
----------40---------------------------------
INT 40 - DISKETTE - ROM BIOS DISKETTE HANDLER RELOCATED BY HARD DISK BIOS
SeeAlso: INT 13,INT 63
----------40---------------------------------
INT 40 - Z100 - Master 8259 - Parity error or S100 error
SeeAlso: INT 41"Z100",INT FF"Z100"
----------40---------------------------------
INT 40 - Acorn BBC Master 512 - "OSFIND" - OPEN FILE
AL = operation
00h close file
40h open file for reading
80h open file for writing
C0h open file for random access
DS:BX -> CR-terminated filename
Return: AL = file handle (00h if file closed or could not be opened)
Note: the Acorn BBC Master 512 is an 80186-based add-on board for the
6502-based Master 128 which uses the original CPU as an I/O processor
SeeAlso: INT 41"Acorn",INT 42"Acorn",INT 43"Acorn",INT 44"Acorn",INT 4C"Acorn"
----------41---------------------------------
INT 41 - SYSTEM DATA - HARD DISK 0 PARAMETER TABLE
Note: the default parameter table array is located at F000h:E401h in 100%
compatible BIOSes; the pointer may be overridden by the hard disk
controller's BIOS to support drive formats unknown to the ROM BIOS
SeeAlso: INT 13/AH=09h,INT 1E,INT 46
Format of fixed disk parameters:
Offset Size Description
00h WORD number of cylinders
02h BYTE number of heads
03h WORD starting reduced write current cylinder (XT only, 0 for others)
05h WORD starting write precompensation cylinder number
07h BYTE maximum ECC burst length (XT only)
08h BYTE control byte
bits 0-2: drive option (XT only, 0 for others)
bit 3: set if more than 8 heads (AT and later only)
bit 4: always 0
bit 5: set if manufacturer's defect map on max cylinder+1
(AT and later only)
bit 6: disable ECC retries
bit 7: disable access retries
09h BYTE standard timeout (XT only, 0 for others)
0Ah BYTE formatting timeout (XT only, 0 for others)
0Bh BYTE timeout for checking drive (XT only, 0 for others)
0Ch WORD cylinder number of landing zone (AT and later only)
0Eh BYTE number of sectors per track (AT and later only)
0Fh BYTE reserved
----------41---------------------------------
INT 41 - Z100 - Master 8259 - Processor Swap
SeeAlso: INT 40"Z100",INT 42"Z100"
----------41---------------------------------
INT 41 - Acorn BBC Master 512 - "OSGBPB" - MULTI-BYTE GET/PUT
AL = function
01h put bytes sequentially
02h put bytes, ignoring sequential pointer
03h get bytes sequentially
04h get bytes, ignoring sequential pointer
05h get media title and boot option
06h get current device and directory
07h get current library and device
08h search directory
DS:BX -> control block (see below)
Return: CF clear if successful
CF set on error
AL = 00h if operation attempted
AL unchanged if unsupported function
SeeAlso: INT 40"Acorn",INT 42"Acorn",INT 43"Acorn"
Format of control block:
Offset Size Description
00h BYTE file handle
01h DWORD pointer to data in either I/O processor or Tube processor
05h DWORD number of bytes to be transferred
09h DWORD transfer address
----------4112-------------------------------
INT 41 P - MS Windows debugging kernel - "OutputDebugString"
AH = 12h
???
Return: ???
SeeAlso: AH=50h
----------4150-------------------------------
INT 41 P - MS Windows debugging kernel - "DefineDebugSegment"
AH = 50h
???
Return: ???
SeeAlso: AH=12h
----------42---------------------------------
INT 42 - VIDEO - RELOCATED DEFAULT INT 10 VIDEO SERVICES (EGA,VGA)
SeeAlso: INT 10
Note: not used by PS/2 built-in VGA or XGA
----------42---------------------------------
INT 42 - Z100 - Master 8259 - Timer
SeeAlso: INT 41"Z100",INT 43"Z100"
----------42---------------------------------
INT 42 - Acorn BBS Master 512 - "OSBPUT" - WRITE SINGLE BYTE TO FILE
AL = byte to be written
BH = file handle
Return: flags destroyed
SeeAlso: INT 40"Acorn",INT 41"Acorn",INT 43"Acorn",INT 47"Acorn",INT 49"Acorn"
----------43---------------------------------
INT 43 - VIDEO DATA - CHARACTER TABLE (EGA,MCGA,VGA)
points at graphics data for characters 00h-7Fh of the current font
SeeAlso: INT 1F,INT 44"VIDEO"
----------43---------------------------------
INT 43 - Z100 - Master 8259 - Slave 8259 input
Note: slave runs in special fully nested mode
SeeAlso: INT 42"Z100",INT 44"Z100"
----------43---------------------------------
INT 43 - Acorn BBC Master 512 - "OSBGET" - READ SINGLE BYTE FROM FILE
BH = file handle
Return: CF clear if successful
AL = byte read from file
CF set on error
SeeAlso: INT 40"Acorn",INT 41"Acorn",INT 42"Acorn",INT 46"Acorn"
----------44---------------------------------
INT 44 - VIDEO DATA - ROM BIOS CHARACTER FONT, CHARACTERS 00h-7Fh (PCjr)
points at graphics data for current character font
SeeAlso: INT 1F,INT 43"VIDEO"
----------44---------------------------------
INT 44 - Novell NetWare - HIGH-LEVEL LANGUAGE API
----------44---------------------------------
INT 44 - IBM 3270-PC High Level Language API
DS:SI -> parameter control block
----------44---------------------------------
INT 44 - Z100 - Master 8259 - Serial A
SeeAlso: INT 43"Z100",INT 45"Z100"
----------44---------------------------------
INT 44 - Acorn BBC Master 512 - "OSARGS" - GET/SET FILE PARAMS FOR OPEN FILE
AH = 00h
AL = function
00h get current filing system
Return: AL = filing system (see below)
01h get address of commandline tail
Return: BX buffer filled with address of command tail
in I/O processor address space
(use INT 4A/AL=05h to retrieve)
FFh flush all files onto secondary storage
AH = file handle
AL = function
00h get sequential pointer for file
01h set sequential pointer for file
02h get length of file
BX -> 4-byte data buffer
Return: BX buffer updated if appropriate
Note: the commandline tail is terminated with a carriage return (0Dh)
SeeAlso: INT 40"Acorn",INT 41"Acorn",INT 45"Acorn",INT 4A"Acorn"
Values for filing system:
00h none
01h 1200 bps cassette
02h 300 bps cassette
03h ROM FS
04h DFS
05h ANFS/NFS
06h TFS
08h ADFS
----------45---------------------------------
INT 45 - Z100 - Master 8259 - Serial B
SeeAlso: INT 44"Z100",INT 46"Z100"
----------45---------------------------------
INT 45 - Acorn BBC Master 512 - "OSFILE" - READ/WRITE FILE OR DIRECTORY INFO
AL = function
00h save block of memory as file
01h update directory entry for existing file
02h set load address for existing file
03h set execution address for existing file
04h set attributes for existing file
05h read directory
06h delete file
FFh load file
DS:BX -> control block (see below)
Return: FLAGS destroyed
AL = file type
00h not found
01h file found
02h directory found
FFh protected file
SeeAlso: INT 40"Acorn",INT 41"Acorn",INT 44"Acorn",INT 46"Acorn"
Format of control block:
Offset Size Description
00h WORD address of CR-terminated filename
02h DWORD load address of file
06h DWORD execution address of file
0Ah DWORD start address of data to save
0Eh DWORD end address of data to save, or file attributes
file attributes in low byte:
bit 0: no owner read access
bit 1: no owner write access
bit 2: not executable by owner
bit 3: not deletable by owner
bit 4: no public read access
bit 5: no public write access
bit 6: not executable with public access
bit 7: not deletable with public access
other three bytes are filing-system specific file attributes
----------46---------------------------------
INT 46 - SYSTEM DATA - HARD DISK 1 DRIVE PARAMETER TABLE
SeeAlso: INT 13/AH=09h,INT 41
----------46---------------------------------
INT 46 - Z100 - Master 8259 - Keyboard, Retrace, and Light Pen
SeeAlso: INT 45"Z100",INT 47"Z100"
----------46---------------------------------
INT 46 - Acorn BBC Master 512 - "OSRDCH" - GET CHARACTER FROM CUR INPUT STREAM
Return: CF clear if successful
AL = character read
CF set on error
AL = error code
SeeAlso: INT 40"Acorn",INT 43"Acorn",INT 47"Acorn",INT 49"Acorn"
----------47---------------------------------
INT 47 - Z100 - Master 8259 - Printer
SeeAlso: INT 46"Z100",INT 48"Z100"
----------47---------------------------------
INT 47 - Acorn BBC Master 512 - "OSWRCH" - WRITE CHARACTER TO CUR OUTPUT STREAM
AL = character to be written
Return: FLAGS destroyed
SeeAlso: INT 40"Acorn",INT 46"Acorn",INT 49"Acorn"
----------478000-----------------------------
INT 47 - SQL Base - DATABASE ENGINE API
AX = 8000h
DS:BX -> parameter block, first word is function number
Note: SQL Base is a network-oriented database engine by Gupta Technologies
Values for function number:
01h "SQLFINI" initalialize application's use of the database
02h "SQLFDON" application is done using the database
03h "SQLFCON" connect to a cursor/database
04h "SQLFDIS" disconnect from a cursor/database
05h "SQLFCOM" compile a SQL command
06h "SQLFEXE" execute a SQL command
07h "SQLFCEX" compile and execute a SQL command
08h "SQLFCMT" commit a transaction to the database
09h "SQLFDES" describe the items of a SELECT statement
0Ah "SQLFGFI" get fetch information
0Bh "SQLFFBK" fetch previous result row from SELECT statement
0Ch "SQLFFET" fetch next result row from SELECT statement
0Dh "SQLFEFB" enable fetch backwards
0Eh "SQLFPRS" position in result set
0Fh "SQLFURS" undo result set
10h "SQLFNBV" get number of bind variables
11h "SQLFBND" bind data variables
12h "SQLFBNN" bind numerics
13h "SQLFBLN" bind long number
14h "SQLFBLD" bind long data variables
15h "SQLFSRS" start restriction set processing
16h "SQLFRRS" restart restriction set processing
17h "SQLFCRS" close restriction set
18h "SQLFDRS" drop restriction set
19h "SQLFARF" apply Roll Forward journal
1Ah "SQLFERF" end Roll Forward journal
1Bh "SQLFSRF" start Roll Forward journal
1Ch "SQLFSTO" store a compiled SQL command
1Dh "SQLFRET" retrieve a compiled SQL command
1Eh "SQLFDST" drop a stored command
1Fh "SQLFCTY" get command type
20h "SQLFEPO" get error position
21h "SQLFGNR" get number of rows
22h "SQLFNSI" get number of select items
23h "SQLFRBF" get Roll Back flag
24h "SQLFRCD" get return code
25h "SQLFROW" get number of ROWs
26h "SQLFSCN" set cursor name
27h "SQLFSIL" set isolation level
28h "SQLFSLP" set log parameters
29h "SQLFSSB" set select buffer
2Ah "SQLFSSS" set sort space
2Bh "SQLFRLO" read long
2Ch "SQLFWLO" write long
2Dh "SQLFLSK" long seek
2Eh "SQLFGLS" get long size
2Fh "SQLFELO" end long operation
30h "SQLFRBK" roll back a transaction from the database
31h "SQLFERR" error message
32h "SQLFCPY" copy
33h "SQLFR01" reserved
34h "SQLFSYS" system
35h "SQLFSTA" statistics
36h "SQLFR02" reserved
37h "SQLFXAD" extra add
38h "SQLFXCN" extra character to number
39h "SQLFXDA" extra date add
3Ah "SQLFXDP" extra date picture
3Bh "SQLFXDV" extra divide
3Ch "SQLFXML" extra multiply
3Dh "SQLFXNP" extra number picture
3Eh "SQLFXPD" extra picture date
3Fh "SQLFXSB" extra subtract
40h "SQLFINS" install database
41h "SQLFDIN" deinstall database
42h "SQLFDIR" directory of databases
43h "SQLFTIO" timeout
44h "SQLFFQN" get fully qualified column name
45h "SQLFEXP" explain execution plan
46h "SQLFFER" get full error
47h "SQLFBKP" begin online backup
48h "SQLFRDC" read backup data chunk
49h "SQLFEBK" end backup
4Ah "SQLFRES" begin restore from backup
4Bh "SQLFWDC" write backup data chunk for restore
4Ch "SQLFRRD" recover restored database to consistent state
4Dh "SQLFERS" end restore
4Eh "SQLFNRR" return number of result set rows
4Fh "SQLFSTR" start restriction mode
50h "SQLFSPR" stop restriction mode
51h "SQLFCNC" connect 2
52h "SQLFCNR" connect with no recovery
53h "SQLFOMS" set output message size
54h "SQLFIMS" set input message size
55h "SQLFSCP" set cache pages
56h "SQLFDSC" describe items of a SELECT statement (external)
57h "SQLFLAB" get label info for items in SELECT statement
58h "SQLFCBV" clear bind variables
59h "SQLFGET" get database information
5Ah "SQLFSET" set database information
5Bh "SQLFTEC" translate error code
----------478001-----------------------------
INT 47 - SQL Base - GET VERSION NUMBER
AX = 8001h
Return: ???
Note: SQL Base is a network-oriented database engine by Gupta Technologies
----------48---------------------------------
INT 48 - KEYBOARD - CORDLESS KEYBOARD TRANSLATION (PCjr)
SeeAlso: INT 49"PCjr"
----------48---------------------------------
INT 48 - Z100 - Slave 8259 - S100 vectored line 0
SeeAlso: INT 47"Z100",INT 49"Z100"
----------48---------------------------------
INT 48 - Watstar PC Network data pointer 1
SeeAlso: INT 49"Watstar"
----------48---------------------------------
INT 48 - Acorn BBC Master 512 - "OSNEWL" - SEND NEWLINE TO OUTPUT STREAM
Return: FLAGS destroyed
Note: writes a carriage return (0Dh) followed by a linefeed (0Ah)
SeeAlso: INT 40"Acorn",INT 47"Acorn",INT 49"Acorn"
----------49---------------------------------
INT 49 - SYSTEM DATA - NON-KEYBOARD SCAN-CODE TRANSLATION TABLE (PCjr)
SeeAlso: INT 48"PCjr"
Format of translation table:
Offset Size Description
00h BYTE number of nonkeyboard scancodes in the table
01h N WORDs high byte 00h (NUL) byte scancode with low order byte
representing the scancode mapped values relative to their
input values within the range of 56h through 7Eh
----------49---------------------------------
INT 49 - Z100 - Slave 8259 - S100 vectored line 1
SeeAlso: INT 48"Z100",INT 4A"Z100"
----------49---------------------------------
INT 49 - Texas Instruments PC - VIDEO I/O???
apparently provides direct video display on the TI Professional PC
----------49---------------------------------
INT 49 - Watstar PC Network data pointer 2
SeeAlso: INT 49"Watstar"
----------49---------------------------------
INT 49 - Acorn BBC Master 512 - "OSASCI" - WRITE CHARACTER TO CUR OUTPUT STREAM
AL = character to be written
Return: FLAGS destroyed
Note: converts carriage return (0Dh) into CRLF sequence (0Dh 0Ah)
SeeAlso: INT 40"Acorn",INT 46"Acorn",INT 47"Acorn",INT 48"Acorn"
----------490001-----------------------------
INT 49 - MAGic v1.16+ - TURN ON MAGNIFICATION
AX = 0001h
Return: AX = status
0000h cannot magnify current video mode
0002h magnified (text mode)
0003h magnified (graphics mode)
FFFDh function works only in magnified mode
FFFFh MAGic busy, retry later
BX,CX,DX destroyed
Notes: MAGic (MAGnification In Color) is a TSR by Microsystems Software, Inc.
providing 2x2 text and graphics magnification on VGA, XGA, and SVGA
INT 49 is the default, but may be overridden on the commandline. The
actual interrupt in use may be found by searching for the signature
"MAGic" or "xMAGic" (for the deluxe version) immediately preceding
the interrupt handler (this is also the installation check). MAGic
uses CodeRunneR, which places the signature "RT" at offset 0000h in
the interrupt handler's segment, followed by MAGic's TSR ID of
"VMAG".
SeeAlso: AX=0001h,AX=0003h,AX=0004h,AX=0008h
----------490002-----------------------------
INT 49 - MAGic v1.16+ - TURN OFF MAGNIFICATION
AX = 0002h
Return: AX = status (see AX=0001h)
BX,CX,DX destroyed
SeeAlso: AX=0001h
----------490003-----------------------------
INT 49 - MAGic v1.16+ - SHIFT MAGNIFIED WINDOW TO INCLUDE SPECIFIED LOCATION
AX = 0003h
BX = vertical position (character row [text] or pixel row [graphics])
DX = horizontal position (char column [text] or 8-pixel units [gr])
Return: AX = status
0000h successful
FFFFh MAGic busy, retry later
BX,CX,DX destroyed
Note: window is not moved if the position is inside the current window
SeeAlso: AX=0001h,AX=0004h,AX=0005h
----------490004-----------------------------
INT 49 - MAGic v1.16+ - REPOSITION MAGNIFIED WINDOW
AX = 0004h
BX = vertical position of upper left corner
DX = horizontal position
Return: AX = status (see AX=0003h)
BX,CX,DX destroyed
SeeAlso: AX=0001h,AX=0003h,AX=0005h
----------490005-----------------------------
INT 49 - MAGic v1.16+ - GET POSITION OF MAGNIFIED WINDOW
AX = 0005h
Return: AX = status
0000h successful
BX = vertical position (char row or pixel row)
DX = horizontal position (char column or 8-pixel units)
FFFFh MAGic busy, retry later
BX,DX destroyed
CX destroyed
SeeAlso: AX=0001h,AX=0003h,AX=0004h,AX=0006h,AX=0007h
----------490006-----------------------------
INT 49 - MAGic v1.16+ - GET SIZE OF FULL SCREEN
AX = 0006h
Return: AX = status
0000h successful
BX = vertical size (char rows or pixel rows)
DX = horizontal size (char cols or 8-pixel units)
FFFFh MAGic busy, retry later
BX,DX destroyed
CX destroyed
SeeAlso: AX=0001h,AX=0005h,AX=0007h
----------490007-----------------------------
INT 49 - MAGic v1.16+ - GET SIZE OF MAGNIFICATION WINDOW
AX = 0007h
Return: AX = status
0000h successful
BX = vertical size (char rows or pixel rows)
DX = horizontal size (char cols or 8-pixel units)
FFFEh invalid function
FFFFh MAGic busy, retry later
BX,DX destroyed
CX destroyed
BUG: in v1.16 and v1.17, this function is not recognized as valid, but
AX=0000h is accepted and will branch into hyperspace
SeeAlso: AX=0001h,AX=0006h
----------490008-----------------------------
INT 49 - MAGic v1.23+ - SET TEXT MODE MAGNIFICATION SIZE
AX = 0008h
BX = scaling factor (01h=1.4 times, 02h, 04h, 06h, 08h, 09h=12 times)
Return: AX = status
0000h successful
FFFBh scaling factor only available in MAGic Deluxe
FFFCh already in magnified state, can't set size
Notes: this call specifies the amount a subsequent call to AX=0001h should
magnify the display
scaling factors greater than 2 are only available in MAGic Deluxe
SeeAlso: AX=0001h
----------4A---------------------------------
INT 4A C - SYSTEM - USER ALARM HANDLER
Desc: This interrupt is invoked by the BIOS when a real-time clock alarm
occurs; an application may use it to perform an action at a
predetermined time.
Note: this interrupt is called from within a hardware interrupt handler,
so all usual precautions against reentering DOS must be taken
SeeAlso: INT 1A/AH=06h
----------4A---------------------------------
INT 4A - Z100 - Slave 8259 - S100 vectored line 2
SeeAlso: INT 49"Z100",INT 4B"Z100"
----------4A---------------------------------
INT 4A - Acorn BBC Master 512 - "OSWORD" - MISC FUNCTIONS USING CONTROL BLOCK
AL = function code
FAh transfer data between 80186 and 65C12 I/O processor
DS:BX -> control block (see below)
Return: FLAGS destroyed
control block updated
Note: there are more functions than are listed here, but details are not
available
SeeAlso: INT 40"Acorn",INT 4B"Acorn",INT 4C"Acorn"
Format of control block for function FAh:
Offset Size Description
00h BYTE number of parameters sent to I/O processor (0Dh,0Eh)
01h BYTE number of parameters read from I/O processor (01h)
02h DWORD I/O processor address
06h DWORD 80186 segment:offset address
0Ah WORD number of bytes to transfer
0Ch BYTE operation type
00h write to 65C12 at 24 us/byte
01h read from 65C12 at 24 us/byte
02h write to 65C12 at 26 us/word
03h read from 65C12 at 26 us/word
04h write to 65C12 at 10 us/byte using 256-byte blocks
05h read from 65C12 at 10 us/byte using 256-byte blocks
0Dh BYTE 65C12 memory access control (only used if offset 00h = 0Eh)
bit 7: unused
bit 6: always use main screen memory if I/O addr 3000h-7FFFh
(overrides bit 5)
bit 5: use shadow screen memory if screen address specified
bit 4: use current ROM rather than ROM selected by bits 3-0
(only if I/O address between 8000h and BFFFh)
bits 3-0: paged ROM number
----------4B---------------------------------
INT 4B - Z100 - Slave 8259 - S100 vectored line 3
SeeAlso: INT 4A"Z100",INT 4C"Z100"
----------4B---------------------------------
INT 4B - Common Access Method SCSI interface (draft revision 1.9)
ES:DI -> CAM Control Block (see INT 4F/AX=8100h)
Notes: the CAM committee moved the interface to INT 4F after revision 1.9
to avoid conflicting with the IBM SCSI interface and the Virtual
DMA specification
the installation check for the driver is the string "SCSI_CAM" eight
bytes past the INT 4Bh handler
it is not known whether any drivers actually implemented this
interface on INT 4B instead of INT 4F
SeeAlso: INT 4F/AX=8100h
----------4B---------------------------------
INT 4B - Acorn BBC Master 512 - "OSBYTE" - MISC FUNCTIONS USING REGISTER PARAMS
AL = function code
BL = first parameter
BH = second parameter (if needed)
Return: BL = first return parameter
BH = second return parameter
CF depends on function
SeeAlso: INT 40"Acorn",INT 4A"Acorn",INT 4C"Acorn"
----------4B80-------------------------------
INT 4B - IBM SCSI interface
AH = 80h
details not yet available
----------4B8102DX0000-----------------------
INT 4B - Virtual DMA Specification (VDS) - GET VERSION
AX = 8102h
DX = 0000h
Return: CF clear if successful
AH = major version number
AL = minor version number
BX = product number
0000h for Quadtel's QMAPS and Hewlett-Packard's HPMM.SYS
0001h for Microsoft's EMM386.EXE
4560h ("E`") for Qualitas' 386MAX
4D43h ("MC") for V Communication's Memory Commander
5145h ("QE") for Quarterdeck's QEMM-386
CX = product revision number
always 0000h for QMAPS and HPMM.SYS
always 0001h for Microsoft's EMM386.EXE v4.20-4.41
SI:DI = maximum DMA buffer size
DX = flags
bit 0: PC/XT bus (DMA in first megabyte only)
1: physical buffer/remap region in first megabyte
2: automatic remap enabled
3: all memory is physically contiguous
4-15: reserved (zero)
CF set on error
AL = error code (see below)
Note: bit 5 of 0040h:007Bh is supposed to be set if VDS is supported; this is
apparently not always the case
SeeAlso: INT 31
Values for error code:
01h region not in contiguous memory
02h region crossed a physical alignment boundary
03h unable to lock pages
04h no buffer available
05h region too large for buffer
06h buffer currently in use
07h invalid memory region
08h region was not locked
09h number of physical pages greater than table length
0Ah invalid buffer ID
0Bh copy out of buffer range
0Ch invalid DMA channel number
0Dh disable count overflow
0Eh disable count underflow
0Fh function not supported
10h reserved flag bits set in DX
Format of DMA descriptor structure (DDS):
Offset Size Description
00h DWORD region size
04h DWORD offset
08h WORD segment/selector
0Ah WORD buffer ID
0Ch DWORD physical address
Format of Extended DMA descriptor structure (EDDS):
Offset Size Description
00h DWORD region size
04h DWORD offset
08h WORD segment/selector
0Ah WORD reserved
0Ch WORD number available
0Eh WORD number used
10h DWORD region 0 physical address
14h DWORD region 0 size in bytes
18h DWORD region 1 physical address
1Ch DWORD region 1 size in bytes
...
Format of Extended DMA descriptor structure (EDDS) with page table entries:
Offset Size Description
00h DWORD region size
04h DWORD offset
08h WORD segment/selector
0Ah WORD reserved
0Ch WORD number available
0Eh WORD number used
10h DWORD page table entry 0 (same as 80386 page table entry)
14h DWORD page table entry 1
...
Note: bits 1-11 of the page table entries should be zero; bit 0 set if page
is present and locked
----------4B8103-----------------------------
INT 4B - Virtual DMA Specification - LOCK DMA REGION
AX = 8103h
DX = flags
bit 0: reserved (zero)
1: data should be copied into buffer (ignored if bit 2 set)
2: buffer should not be allocated if region noncontiguous or
crosses physical alignment boundary specified by bits 4-5
3: don't attempt automatic remap
4: region must not cross 64K physical alignment boundary
5: region must not cross 128K physical alignment boundary
6-15: reserved (zero)
ES:DI -> DMA descriptor structure (see AX=8102h)
Return: CF clear if successful
DDS physical address field filled in
DDS buffer ID field filled (0000h if no buffer allocated)
CF set on error
AL = error code (see AX=8102h)
DDS region size field filled wth maximum contiguous length in bytes
SeeAlso: AX=8104h,AX=8105h
----------4B8104-----------------------------
INT 4B - Virtual DMA Specification - UNLOCK DMA REGION
AX = 8104h
DX = flags
bit 0: reserved (zero)
1: data should be copied out of buffer
2-15: reserved (zero)
ES:DI -> DMA descriptor structure (see AX=8102h) with region size,
physical address, and buffer ID fields set
Return: CF clear if successful
DDS physical address field set
DDS buffer ID field set (0000h if no buffer allocated)
CF set on error
AL = error code (see AX=8102h)
DDS region size field filled wth maximum contiguous length in bytes
SeeAlso: AX=8103h,AX=8106h
----------4B8105-----------------------------
INT 4B - Virtual DMA Specification - SCATTER/GATHER LOCK REGION
AX = 8105h
DX = flags
bits 0-5: reserved (zero)
6: EDDS should be returned with page table entries
7: only present pages should be locked (not-present pages
receive entry of 0000h)
8-15: reserved (zero)
ES:DI -> Extended DMA descriptor structure (see AX=8102h)
region size, linear segment, linear offset, and number avail
fields set
Return: CF clear if successful
EDDS number used field set
if DX bit 6 set, lower 12 bits of BX = offset in first page
CF set on error
AL = error code (see AX=8102h)
EDDS region size field filled with max length in bytes that can be
locked and described in the EDDS table
SeeAlso: AX=8103h,AX=8106h
----------4B8106-----------------------------
INT 4B - Virtual DMA Specification - SCATTER/GATHER UNLOCK REGION
AX = 8106h
DX = flags
bits 0-5: reserved (zero)
6: EDDS contains page table entries
7: EDDS may contain not-present pages (entry = 0000h)
8-15: reserved (zero)
ES:DI -> Extended DMA descriptor structure (see AX=8102h) returned
by AX=8105h
Return: CF clear if successful
CF set on error
AL = error code (see AX=8102h)
Note: according to the Microsoft version of the VDS specification, the
actual scatter/gather list is ignored, while according to the IBM
version of the specification, "the result of a LOCK operation"
must be provided to this function
SeeAlso: AX=8104h,AX=8105h
----------4B8107-----------------------------
INT 4B - Virtual DMA Specification - REQUEST DMA BUFFER
AX = 8107h
DX = flags
bit 0: reserved (zero)
1: data should be copied into buffer
2-15: reserved (zero)
ES:DI -> DMA descriptor structure (see AX=8102h) with region size set
(also region offset and region segment if DX bit 1 set)
Return: CF clear if successful
DDS physical address and buffer ID set
DDS region size filled with length of buffer
CF set on error
AL = error code (see AX=8102h)
SeeAlso: AX=8108h
----------4B8108-----------------------------
INT 4B - Virtual DMA Specification - RELEASE DMA BUFFFER
AX = 8108h
DX = flags
bit 0: reserved (zero)
1: data should be copied out of buffer
2-15: reserved (zero)
ES:DI -> DMA descriptor structure (see AX=8102h) with buffer ID set
(also region size/region offset/segment if DX bit 1 set)
Return: CF clear if successful
CF set on error
AL = error code (see AX=8102h)
SeeAlso: AX=8107h
----------4B8109DX0000-----------------------
INT 4B - Virtual DMA Specification - COPY INTO DMA BUFFER
AX = 8109h
DX = 0000h
ES:DI -> DMA descriptor structure (see AX=8102h) with buffer ID,
region segment/offset, and region size fields set
BX:CX = starting offset into DMA buffer
Return: CF clear if successful
CF set on error
AL = error code (see AX=8102h)
SeeAlso: AX=810Ah
----------4B810ADX0000-----------------------
INT 4B - Virtual DMA Specification - COPY OUT OF DMA BUFFER
AX = 810Ah
DX = 0000h
ES:DI -> DMA descriptor structure (see AX=8102h) with buffer ID,
region segment/offset, and region size fields set
BX:CX = starting offset into DMA buffer
Return: CF clear if successful
CF set on error
AL = error code (see AX=8102h)
SeeAlso: AX=8109h
----------4B810B-----------------------------
INT 4B - Virtual DMA Specification - DISABLE DMA TRANSLATION
AX = 810Bh
BX = DMA channel number
DX = 0000h
Return: CF clear if successful
CF set on error
AL = error code (see AX=8102h)
SeeAlso: AX=810Ch
----------4B810C-----------------------------
INT 4B - Virtual DMA Specification - ENABLE DMA TRANSLATION
AX = 810Ch
BX = DMA channel number
DX = 0000h
Return: CF clear if successful
ZF set if disable count decremented to zero
CF set on error
AL = error code (see AX=8102h)
SeeAlso: AX=810Bh
----------4B810D-----------------------------
INT 4B - QEMM-386 - BUG
AX = 810Dh
Note: the code in QEMM v5.11 and 6.00 jumps to an invalid location on this
call
----------4C---------------------------------
INT 4C - Z100 - Slave 8259 - S100 vectored line 4
SeeAlso: INT 4B"Z100",INT 4D"Z100"
----------4C---------------------------------
INT 4C - Acorn BBC Master 512 - "OSCLI" - INTERPRET COMMAND LINE
DS:BX -> CR-terminated command string
Return: FLAGS destroyed
SeeAlso: INT 40"Acorn",INT 4A"Acorn",INT 4B"Acorn"
----------4D---------------------------------
INT 4D - Z100 - Slave 8259 - S100 vectored line 5
SeeAlso: INT 4C"Z100",INT 4E"Z100"
----------4E---------------------------------
INT 4E - TI Professional PC - DISK I/O
used instead of INT 13 on the TI Professional PC
SeeAlso: INT 13
----------4E---------------------------------
INT 4E - Z100 - Slave 8259 - S100 vectored line 6
SeeAlso: INT 4D"Z100",INT 4F"Z100"
----------4F---------------------------------
INT 4F - Z100 - Slave 8259 - S100 vectored line 7
SeeAlso: INT 4E"Z100"
----------4F8100-----------------------------
INT 4F - Common Access Method SCSI interface rev 2.3 - SEND CCB TO XPT/SIM
AX = 8100h
ES:BX -> CAM Control Block (CCB) (see below)
Return: AH = status
00h successful
01h invalid CCB address (0000h:0000h)
Note: the SCSI Interface Module (SIM) may complete the requested function
and invoke the completion callback function before this call returns
SeeAlso: AX=8200h,INT 4B"Common Access Method"
Format of CAM Control Block:
Offset Size Description
00h DWORD physical address of this CCB
04h WORD CAM control block length
06h BYTE function code (see below)
07h BYTE CAM status (see below)
08h BYTE SCSI status
09h BYTE path ID (FFh = XPT)
0Ah BYTE target ID
0Bh BYTE logical unit number
0Ch BYTE CAM flags
bits 7-6: direction
00 reserved
01 in
10 out
11 no data transfer
bit 5: disable autosense
4: scatter/gather
3: disable callback on completion
2: linked CDB
1: tagged queue action enable
0: CDB is a pointer
0Dh BYTE CAM flags
bit 7: disable disconnect
6: initiate synchronous transfers \ mutually
5: disable synchronous transfers / exclusive
4: SIM queue priority
1 head insertion
0 tail insertion (normal)
bit 3: SIM queue freeze
2: engine synchronize
bits 1-0: reserved
0Eh BYTE CAM address flags
bit 7: SG list/data (0 = host, 1 = engine)
bit 6: CDB pointer (bits 6-1: 0=virtual addr, 1=phys addr)
bit 5: SG list/data
bit 4: sense buffer
bit 3: message buffer
bit 2: next CCB
bit 1: callback on completion
bit 0: reserved
0Fh BYTE target-mode flags
bit 7: data buffer valid
bit 6: status valid
bit 5: message buffer valid
bit 4: reserved
bit 3: phase-cognizant mode
bit 2: target CCB available
bit 1: disable autodisconnect
bit 0: disable autosave/restore
---function 02h---
10h DWORD pointer to 36-byte buffer for inquiry data or 0000h:0000h
14h BYTE peripheral device type of target logical unit number
---function 03h---
10h BYTE version number (00h-07h prior to rev 1.7, 08h = rev 1.7,
09h-FFh = rev no, i.e. 23h = rev 2.3)
11h BYTE SCSI capabilities
bit 7: modify data pointers
6: wide bus (32 bits)
5: wide bus (16 bits)
4: synchronous transfers
3: linked commands
2: reserved
1: tagged queueing
0: soft reset
12h BYTE target mode support
bit 7: processor mode
6: phase-cognizant mode
5-0: reserved
13h BYTE miscellaneous flags
bit 7: scanned high to low instead of low to high
6: removables not included in scan
5: inquiry data not kept by XPT
4-0: reserved
14h WORD engine count
16h 14 BYTEs vendor-specific data
24h DWORD size of private data area
28h DWORD asynchronous event capabilities
bits 31-24: vendor-specific
23-8: reserved
7: new devices found during rescan
6: SIM module deregistered
5: SIM module registered
4: sent bus device reset to target
3: SCSI AEN
2: reserved
1: unsolicited reselection
0: unsolicited SCSI bus reset
2Ch BYTE highest path ID assigned
2Dh BYTE SCSI device ID of initiator
2Eh 2 BYTEs reserved
30h 16 BYTEs SIM vendor ID
40h 16 BYTEs HBA (host bus adaptor) vendor ID
50h 4 BYTEs operating-system dependant usage
---functions 00h,04h,11h,12h---
no additional fields
---function 05h---
10h DWORD asynchronous event enables (see function 03h above)
14h DWORD pointer to asynchronous callback routine
18h DWORD pointer to peripheral driver buffer
1Ch BYTE size of peripheral buffer
---function 06h---
10h BYTE peripheral device type of target
---functions 10h,13h---
10h DWORD pointer to CCB to be aborted
---function 20h---
10h WORD engine number
12h BYTE engine type
00h buffer memory
01h lossless compression
02h lossy compression
03h encryption
13h BYTE engine algorithm ID
00h vendor-unique
01h LZ1 variation 1 (STAC)
02h LZ2 variation 1 (HP DCZL)
03h LZ2 variation 2 (Infochip)
14h DWORD engine memory size
---function 21h---
10h DWORD pointer to peripheral driver
14h 4 BYTEs reserved
18h DWORD OS-dependent request-mapping info
1Ch DWORD address of completion callback routine
20h DWORD pointer to scatter/gather list or data buffer
24h DWORD length of data transfer
28h DWORD pointer to engine buffer data
2Ch 2 BYTEs reserved
2Eh WORD number of scatter/gather entries
30h DWORD maximum destination data length
34h DWORD length of destination data
38h DWORD source residual length
3Ch 12 BYTEs reserved
48h DWORD OS-dependent timeout value
4Ch 4 BYTEs reserved
50h WORD engine number
52h WORD vendor-unique flags
54h 4 BYTEs reserved
58h N BYTEs private data area for SIM
---function 30h---
10h WORD group 6 vendor-unique CDB length
12h WORD group 7 vendor-unique CDB length
14h DWORD pointer to target CCB list
18h WORD number of target CCBs
---other functions---
10h DWORD pointer to peripheral driver
14h DWORD pointer to next CCB
18h DWORD OS-dependent request mapping information
1Ch DWORD address of completion callback routine
20h DWORD pointer to scatter/gather list or data buffer
24h DWORD length of data transfer
28h DWORD pointer to sense info buffer
2Ch BYTE length of sense info buffer
2Dh BYTE CDB length
2Eh WORD number of scatter/gather entries
30h 4 BYTEs reserved
34h BYTE SCSI status
35h 3 BYTEs reserved
38h DWORD residual length
40h 12 BYTEs Command Descriptor Block (CDB)
44h DWORD OS-dependent timeout value
48h DWORD pointer to message buffer
4Ch WORD length of message buffer
4Eh WORD vendor-unique flags
50h BYTE tag queue action
51h 3 BYTEs reserved
54h N BYTEs private data area for SIM
Values for CAM function code:
00h NOP
01h execute SCSI I/O
02h get device type
03h path inquiry
04h release SIM queue
05h set async callback
06h set device type
07h-0Fh reserved
10h abort SCSI command
11h reset SCSI bus
12h reset SCSI device
13h terminate I/O process
14h-1Fh reserved
20h engine inquiry
21h execute engine request
22h-2Fh reserved
30h enable logical unit number
31h execute target I/O
32h-7Fh reserved
80h-FFh vendor-specific functions
Values for CAM status:
00h request in progress
01h request successful
02h host aborted request
03h unable to abort request
04h request completed with error
05h CAM is busy
06h invalid request
07h invalid path ID
08h no such SCSI device
09h unable to terminate I/O process
0Ah timeout on target selection
0Bh timeout on command
0Dh receive message rejection
0Eh sent/received SCSI bus reset
0Fh detected uncorrectable parity error
10h Autosense request failed
11h no HBA detected
12h data over/underrun
13h bus freed unexpectedly
14h target bus phase sequence failure
15h CCB too small
16h requested capability not available
17h sent bus device reset
18h terminate I/O process
38h invalid LUN
39h invalid target ID
3Ah unimplemented function
3Bh nexus not established
3Ch invalid initiator ID
3Dh received SCSI Command Descriptor Block
3Eh LUN already enabled
3Fh SCSI bus busy
Note: bit 6 set to indicate frozen SIM queue
bit 7 set to indicate valid autosense
Completion callback function called with:
interrupts disabled
ES:BX -> completed CCB
Asynchronous callback function called with:
AH = opcode
AL = path ID generating callback
DH = target ID causing event
DL = LUN causing event
CX = data byte count (if applicable)
ES:BX -> data buffer (if applicable)
Return: all registers preserved
----------4F8200CX8765-----------------------
INT 4F - Common Access Method SCSI interface rev 2.3 - INSTALLATION CHECK
AX = 8200h
CX = 8765h
DX = CBA9h
Return: AH = 00h if installed
CX = 9ABCh
DX = 5678h
ES:DI -> "SCSI_CAM"
SeeAlso: AX=8100h,INT 4B"Common Access Method"
---------------------------------------------
Interrupt List, part 7 of 8
This compilation is Copyright (c) 1989,1990,1991,1992,1993 Ralf Brown
----------50---------------------------------
INT 50 - TIL Xpert AIM (X.25)
AH = function
----------50---------------------------------
INT 50 - IRQ0 relocated by DESQview
Notes: this is the default location for older versions; DESQview v2.26+
searches for unused ranges of interrupts and uses the lowest
available range in its list for relocating these IRQs and the next
lowest for relocating IRQ8-IRQ15
a range of eight interrupts starting at a multiple of 8 is considered
available if all vectors are identical and it has not been excluded
with an /XB:nn commandline switch
the list of ranges for v2.26 is 50h,58h,68h,78h,F8h (if < two of these
are available, F8h and then 50h are used anyway)
the list of ranges for v2.31+ is 68h,78h,88h-B8h,F8h (if < two of these
are available, F8h and then F0h are used anyway)
SeeAlso: INT 08"IRQ0",INT 51"DESQview",INT 54"DESQview",INT 58"DESQview"
----------50---------------------------------
INT 50 - IRQ0 relocated by IBM 3278 emulation control program
SeeAlso: INT 51"IBM 3278"
----------50---------------------------------
INT 50 - IRQ0 relocated by OS/2 v1.x
SeeAlso: INT 51"OS/2"
----------500000-----------------------------
INT 50 - Vanderaart TEXT WINDOWS, PC Thuis Shell - OPEN TEXT WINDOW
AX = 0000h
ES:BX -> name string or ES:0000h if none
CH,CL = row,column of upper left corner
DH,DL = row,column of lower right corner
Return: AX = window handle or
0000h if not installed
FFFFh on error
SeeAlso: AX=0001h,AX=0002h"TEXT WINDOWS"
----------500001-----------------------------
INT 50 - Vanderaart TEXT WINDOWS, PC Thuis Shell - CLOSE TEXT WINDOW
AX = 0001h
DI = window handle
SeeAlso: AX=0000h
----------500002-----------------------------
INT 50 - Vanderaart TEXT WINDOWS - PUT CHARACTER IN WINDOW
AX = 0002h
BL = character
BH = attribute
DL = column
DH = row
DI = window handle
Return: AX = status
0000h if successful
FFFFh if outside window
SeeAlso: AX=0000h
----------500002-----------------------------
INT 50 - PC Thuis Organizer Shell - PLOT TEXT
AX = 0002h
ES:BX -> text string
DH,DL = row,column of upper left corner
DI = window handle
Return: AX = status
0000h successful (text fits in window)
FFFFh error
Program: The PC Thuis Organizer Shell was written by John Vanderaart and
published in the June/July 1990 issue of PC Thuis Power magazine
----------500003-----------------------------
INT 50 - Vanderaart TEXT WINDOWS - OUTPUT LINE TO WINDOW
AX = 0003h
ES:BX -> text string
CX = string length (0000h if ASCIZ string)
DL = position (FFh centered, else flush left)
DH = starting row
DI = window handle
Return: AX = status
0000h successful
FFFFh did not fit in window
----------500003-----------------------------
INT 50 - PC Thuis Organizer Shell - WRITE FILE
AX = 0003h
ES:BX -> data to be written
CX = number of bytes to write
DS:SI -> filename
Return: AX = status
0000h successful
FFFFh error
SeeAlso: AX=0004h"Shell"
----------500004-----------------------------
INT 50 - Vanderaart TEXT WINDOWS - GET KEY
AX = 0004h
CH = type
00h any key
01h 'J' or 'N' (Dutch for yes/no)
Return: AX = key
SeeAlso: INT 16/AH=00h
----------500004-----------------------------
INT 50 - PC Thuis Organizer Shell - READ FILE
AX = 0004h
ES:BX -> buffer for data
CX = number of bytes to read or 0000h for entire file
DL = file type
01h setting shell
02h setting sterm
03h INT21 file
DS:SI -> filename
Return: AX = status
0000h successful
FFFFh error
Note: file type numbers are maintained by John Vanderaart; if a new file type
is needed, a type number should be requested from him through the
magazine:
PC Thuis BV
Spaarne 55
2011 CE HAARLEM
The Netherlands
SeeAlso: AX=0003h"Shell"
----------500005-----------------------------
INT 50 -Vanderaart TEXT WINDOWS - CHANGE ATTRIBUTE
AX = 0005h
BL = new attribute
CH,CL = row,column of upper left corner
DH,DL = row,column of lower right corner
DI = window handle
----------500005-----------------------------
INT 50 - PC Thuis Organizer Shell - PROMPT YES/NO
AX = 0005h
ES:BX -> prompt string (ES:0000h if no prompt)
Return: AX = key pressed
0000h "J" (Dutch "Ja" = "Yes")
FFFFh "N" (Dutch "Nee" = "No")
Program: The PC Thuis Organizer Shell was written by John Vanderaart and
published in the June/July 1990 issue of PC Thuis Power magazine
----------500006-----------------------------
INT 50 - Vanderaart TEXT WINDOWS - EDIT LINE IN WINDOW
AX = 0006h
ES:BX -> text string
CH = type
00h everything
01h uppercase only
02h positive numbers
03h Dutch postal code ("9999 AA")
04h 'J' or 'N' (Dutch yes/no)
05h telephone or FAX number
06h positive or negative number
07h date (dd/mm/yy)
08h money
09h '1' through '8'
0Ah '1' through '4'
0Bh uppercase filenames
DH,DL = row,column of upper left corner
DI = window handle
Return: AX = key which terminated entry
0000h Enter
0001h Esc
0002h Down arrow
0003h Up arrow
0004h F10
----------500006-----------------------------
INT 50 - PC Thuis Organizer Shell - ALERT USER
AX = 0006h
ES:BX -> string
----------500007-----------------------------
INT 50 - PC Thuis Organizer Shell - DO LINE
AX = 0007h
ES:BX -> text string
CX = string length in bytes (0000h if NUL-terminated)
DL = FFh to center string, else flush left
DH = upper left row
DI = window handle
Return: AX = status
0000h successful
FFFFh error
Program: The PC Thuis Organizer Shell was written by John Vanderaart and
published in the June/July 1990 issue of PC Thuis Power magazine
----------500008-----------------------------
INT 50 - PC Thuis Organizer Shell - DO MENU
AX = 0008h
ES:BX -> menu structure
Return: AL = index 1 or FFh if not selected
AH = index 2 or FFh if not selected
BL = index 3 or FFh if not selected
BH = index 4 or FFh if not selected
SeeAlso: AX=000Ch
----------500009-----------------------------
INT 50 - PC Thuis Organizer Shell - MESSAGE ON
AX = 0009h
ES:BX -> message string
SeeAlso: AX=000Ah
----------50000A-----------------------------
INT 50 - PC Thuis Organizer Shell - MESSAGE OFF
AX = 000Ah
SeeAlso: AX=0009h
----------50000B-----------------------------
INT 50 - PC Thuis Organizer Shell - CHANGE ATTRIBUTE
AX = 000Bh
BL = new attribute
CH,CL = row,column of upper left corner
DH,DL = row,column of lower right corner
DI = window handle
----------50000C-----------------------------
INT 50 - PC Thuis Organizer Shell - DO REQUEST
AX = 000Ch
ES:BX -> request structure
Return: AX = status
0000h confirmed
FFFFh denied
SeeAlso: AX=0008h
----------50000D-----------------------------
INT 50 - PC Thuis Organizer Shell - EDIT LINE
AX = 000Dh
ES:BX -> text string
CL = length
CH = type
bit 0: force uppercase
bit 1: integer
bit 2: no spaces allowed
bit 3: no cursor keys
DH,DL = row,column of upper left corner
DI = window handle
Return: AX = result code
Program: The PC Thuis Organizer Shell was written by John Vanderaart and
published in the June/July 1990 issue of PC Thuis Power magazine
----------50000E-----------------------------
INT 50 - PC Thuis Organizer Shell - PLOT CHARACTER
AX = 000Eh
BL = character
BH = attribute
DH,DL = row,column at which to plot
DI = window handle
Return: AX = status
0000h successful
FFFFh errror
----------50000F-----------------------------
INT 50 - PC Thuis Organizer Shell - EMPTY WINDOW
AX = 000Fh
BL = character
BH = attribute
DI = window handle
----------500010-----------------------------
INT 50 - PC Thuis Organizer Shell - TRACE MENU
AX = 0010h
ES:BX -> first menu structure
CL = hotkey to look up
Return: AL = index 1 or FFh if not selected
AH = index 2 or FFh if not selected
BL = index 3 or FFh if not selected
BH = index 4 or FFh if not selected
----------500011-----------------------------
INT 50 - PC Thuis Organizer Shell - MOVE MEMORY
AX = 0011h
DS:SI -> source
ES:DI -> destination
CX = number of bytes to move (0000h = until NUL string terminator???)
SeeAlso: AX=0012h
----------500012-----------------------------
INT 50 - PC Thuis Organizer Shell - COMPARE MEMORY
AX = 0012h
DS:SI -> source
ES:DI -> destination
CX = number of bytes to compare (0000h=until NUL string terminator???)
Return: AX = status
0000h same
FFFFh different
SeeAlso: AX=0011h
----------500013-----------------------------
INT 50 - PC Thuis Organizer Shell - GET KEY
AX = 0013h
CH = type flags
bit 0: force uppercase
bit 1: integer
bit 2: no spaces
Return: AX = keystroke
----------500014-----------------------------
INT 50 - PC Thuis Organizer Shell - SCROLL WINDOW
AX = 0014h
BL = direction
06h up
07h down
BH = attribute
DI = window handle
SeeAlso: INT 10/AH=06h,INT 10/AH=07h
----------500015-----------------------------
INT 50 - PC Thuis Organizer Shell - GET MEMORY HANDLE
AX = 0015h
BL = handle size
00h 65536 bytes (64K)
01h 65535 bytes (64K-1)
02h 32768 bytes (32K)
03h 32767 bytes (32K-1)
Return: AX = segment
Program: The PC Thuis Organizer Shell was written by John Vanderaart and
published in the June/July 1990 issue of PC Thuis Power magazine
SeeAlso: INT 21/AH=48h
----------51---------------------------------
INT 51 - through 53 - IRQ1-IRQ3 relocated by DESQview
Note: this is the default location for older versions; see INT 50"DESQview"
for details of interrupt relocation
SeeAlso: INT 50"DESQview",INT 54"DESQview",INT 58"DESQview"
----------51---------------------------------
INT 51 - through 53 - IRQ1-IRQ3 relocated by IBM 3278 emulation control program
SeeAlso: INT 50"IBM 3278",INT 54"IBM 3278"
----------51---------------------------------
INT 51 - through 53 - IRQ1-IRQ3 relocated by OS/2 v1.x
SeeAlso: INT 50"OS/2",INT 54"OS/2"
----------53---------------------------------
INT 53 - ??? - API
BX = function
0000h ???
AX = ???
Return: AX = ???
0004h ???
0009h ???
0015h
AX = ???
DX = ???
0017h
Return: ???
Notes: the installation check consists of looking for the signature "WEBCO"
immediately prior to the interrupt handler
the above calls are made by Show Partner F/X v3.6 (see INT 10/AH=53h)
----------54---------------------------------
INT 54 - through 57 - IRQ4-IRQ7 relocated by DESQview
Note: this is the default location for older versions; see INT 50"DESQview"
for details of interrupt relocation
SeeAlso: INT 50"DESQview",INT 58"DESQview"
----------54---------------------------------
INT 54 - through 57 - IRQ4-IRQ7 relocated by IBM 3278 emulation control program
SeeAlso: INT 51"IBM 3278"
----------54---------------------------------
INT 54 - through 57 - IRQ4-IRQ7 relocated by OS/2 v1.x
SeeAlso: INT 51"OS/2"
----------58---------------------------------
INT 58 - IRQ8 relocated by DESQview 2.26+
Note: this is the default, but other INTs may be used (see INT 50"DESQview")
SeeAlso: INT 50"DESQview",INT 70
----------58---------------------------------
INT 58 - IRQ0 relocated by DoubleDOS
SeeAlso: INT 08
----------59---------------------------------
INT 59 - IRQ9 relocated by DESQview 2.26+
Note: this is the default, but other INTs may be used (see INT 50"DESQview")
SeeAlso: INT 50"DESQview",INT 71
----------59---------------------------------
INT 59 - IRQ1 relocated by DoubleDOS
SeeAlso: INT 09
----------59---------------------------------
INT 59 - GSS Computer Graphics Interface (GSS*CGI)
DS:DX -> block of 5 array pointers
Return: CF set on error
AX = error code
CF clear if successful
AX = return code
Note: INT 59 is the means by which GSS*CGI language bindings communicate with
GSS*CGI device drivers and the GSS*CGI device driver controller.
also used by the IBM Graphic Development Toolkit
----------5A---------------------------------
INT 5A - IRQ10 relocated by DESQview 2.26+
Note: this is the default, but other INTs may be used (see INT 50"DESQview")
SeeAlso: INT 50"DESQview",INT 72
----------5A---------------------------------
INT 5A - IRQ2 relocated by DoubleDOS
SeeAlso: INT 0A
----------5A---------------------------------
INT 5A - Cluster adapter BIOS entry address
???
----------5B---------------------------------
INT 5B - IRQ11 relocated by DESQview 2.26+
Note: this is the default, but other INTs may be used (see INT 50"DESQview")
SeeAlso: INT 50"DESQview",INT 73
----------5B---------------------------------
INT 5B - IRQ3 relocated by DoubleDOS
SeeAlso: INT 0B
----------5B---------------------------------
INT 5B - Used by cluster adapter
----------5B---------------------------------
INT 5B - AT&T Starlan Extended NetBIOS (variable length names)
ES:BX -> Network Control Block (see below)
Return: AL = status (see INT 5C)
SeeAlso: INT 5C
Format of Network Control Block
Offset Size Description
00h BYTE ncb_command (see below)
01h BYTE ncb_retcode
02h BYTE ncb_lsn
03h BYTE ncb_num
04h DWORD -> ncb_buffer
08h WORD ncb_length
0Ah 16 BYTEs ncb_callname
1Ah 16 BYTEs ncb_name
2Ah BYTE ncb_rto
2Bh BYTE ncb_sto
2Ch DWORD -> ncb_post /* int (far *ncb_post)(); */
30h BYTE ncb_lana_num
31h BYTE ncb_cmd_cplt
32h DWORD -> ncb_vname
36h BYTE ncb_vnamelen
37h 9 BYTEs ncb_reserve
Note: fields 00h-31h are the same as for a standard NetBIOS NCB (see INT 5C)
Values for ncb_command field same as for INT 5C, except
70h send net Break
----------5B---------------------------------
INT 5B - Microsoft Network Transport Layer Interface
Note: used by MS-NET for executing network commands
SeeAlso: INT 5C"NetBIOS"
----------5B---------------------------------
INT 5B - used by Alloy NTNX
----------5B---------------------------------
INT 5B - ISOLAN Multi Protocol Software
ES:BX -> Transfer Control Block
Return: AL - status
Note: this software interface allows multiple protocols/software packages
to access a BICC 411x network card
Format of Transfer Control Block:
Offset Type Description
00h BYTE command code
B3h Status
F2h Activate
F3h Deactivate
F4h Send Data
01h BYTE command identity
02h BYTE virtual circuit ID
03h WORD buffer length
05h DWORD buffer pointer
09h BYTE expedited data flag
0Ah BYTE cancelable flag
0Bh 16 BYTEs local network address
1Bh 16 BYTEs remote network address
2Bh DWORD asynchronous notification routine
30h DWORD local network number
34h DWORD remote network number
38h BYTE call timeout
39h BYTE not used
3Ah 8 BYTEs reserved
42h BYTE command code extension
43h WORD Blue Book MAC type
----------5C---------------------------------
INT 5C - IRQ12 relocated by DESQview 2.26+
Note: this is the default, but other INTs may be used (see INT 50"DESQview")
SeeAlso: INT 50"DESQview",INT 74
----------5C---------------------------------
INT 5C - IRQ4 relocated by DoubleDOS
SeeAlso: INT 0C
----------5C---------------------------------
INT 5C - NetBIOS INTERFACE
ES:BX -> network control block (NCB) (see below)
Return: AL = status (see below)
Note: Sytek PCnet card uses DMA 3.
SeeAlso: INT 2A/AH=01h,INT 2A/AH=04h,INT 5B
Values for NetBIOS status:
00h successful
01h bad buffer size
03h invalid NETBIOS command
05h timeout
06h receive buffer too small
07h No-ACK command failed
08h bad session number
09h LAN card out of memory
0Ah session closed
0Bh command has been cancelled
0Dh name already exists
0Eh local name table full
0Fh name still in use, can't delete
11h local session table full
12h remote PC not listening
13h bad NCB_NUM field
14h no answer to CALL or no such remote
15h name not in local name table
16h duplicate name
17h bad delete
18h abnormal end
19h name error, multiple identical names in use
1Ah bad packet
21h network card busy
22h too many commands queued
23h bad LAN card number
24h command finished while cancelling
26h command can't be cancelled
30h name defined by another process (OS/2)
34h NetBIOS environment not defined, must issue reset (OS/2)
35h required operating system resources exhausted (OS/2)
36h maximum applications exceeded (OS/2)
37h no SAPs available for NetBIOS (OS/2)
38h requested resources not available (OS/2)
40h Lana System Error
41h Lana Remote Hot Carrier
42h Lana Local Hot Carrier
43h Lana No Carrier Detected
44h unusual network condition
45h-4Dh hardware error
4Eh token ring is broken
4Fh token ring error
50h adapter malfunction
F7h error in explicit INITIALIZE
F8h error in implicit OPEN
F9h TOKREUI internal error
FAh hardware adapter testing
FBh NetBIOS emulator not found
FCh OPEN or OPEN_SAP failure
FDh unexpected adapter closure
FFh NetBIOS busy (command pending)
Format of Network Control Block:
Offset Size Description
00h BYTE command code (see below)
01h BYTE return code
02h BYTE local session number (LSN)
03h BYTE "ncb_num" datagram table entry from ADD NAME
04h DWORD -> I/O buffer
08h WORD length of data in buffer
0Ah 16 BYTEs remote system to call
1Ah 16 BYTEs network name of local machine
2Ah BYTE receive timeout in 1/2 seconds
2Bh BYTE send timeout in 1/2 seconds
2Ch DWORD -> FAR post handler /* int (far *ncb_post)(); */
30h BYTE network adapter number on which to execute command
00h-03h IBM NetBIOS specs
F0h-FFh Eicon NABios interface (see also INT 7B"Eicon")
31h BYTE command completion code (see returned status above)
32h 14 BYTEs reserved for network card
Values for command code field in NCB (OR with 80h for non-waiting call):
10h start session with NCB_NAME name (call)
11h listen for call
12h end session with NCB_NAME name (hangup)
14h send data via NCB_LSN
15h receive data from a session
16h receive data from any session
17h send multiple data buffers
20h send unACKed message (datagram)
21h receive datagram
22h send broadcast datagram
23h receive broadcast datagram
30h add name to name table
31h delete name from name table
32h reset adapter card and tables
33h get adapter status (see structure "astatus" below)
34h status of all sessions for name (see structure "sstatus" below)
35h cancel
36h add group name to name table
48h send data and receive data (LAN Manager NETBEUI.DOS)
70h unlink from IBM remote program (no F0h function)
71h send data without ACK
72h send multiple buffers without ACK
72h UngermannBass Register (conflicts with above function)
73h UngermannBass SendNmc
74h UngermannBass Callniu
75h UngermannBass Calladdr
76h UngermannBass Listenaddr
77h UngermannBass SendPkt
78h find name
78h UngermannBass RcvPkt (conflicts with above function)
79h token-ring protocol trace
79h UngermannBass SendAttn (conflicts with above function)
7Ah UngermannBass RcvAttn
7Bh UngermannBass Listenniu
7Ch UngermannBass RcvRaw
7Dh UngermannBass SendNmc2
Format of structure "name":
Offset Size Description
00h 16 BYTEs "nm_name" symbolic name
10h BYTE "nm_num" number associated with name
11h BYTE nm_status
Format of structure "astatus":
Offset Size Description
00h 6 BYTEs as_id
06h BYTE as_jumpers
07h BYTE as_post
08h BYTE as_major
09h BYTE as_minor
0Ah WORD as_interval
0Ch WORD as_crcerr
0Eh WORD as_algerr
10h WORD as_colerr
12h WORD as_abterr
14h DWORD as_tcount
18h DWORD as_rcount
1Ch WORD as_retran
1Eh WORD as_xresrc
20h 8 BYTEs as_res0
28h WORD as_ncbfree
2Ah WORD as_ncbmax
2Ch WORD as_ncbx
2Eh 4 BYTEs as_res1
32h WORD as_sespend
34h WORD as_msp
36h WORD as_sesmax
38h WORD as_bufsize
3Ah WORD as_names
3Ch 16 name structures as_name
Format of structure "sstatus":
Offset Size Description
00h BYTE number of sessions being reported
01h BYTE number of sessions with this name
02h BYTE number of outstanding receive datagrams
03h BYTE number of outstanding ReceiveAnys
04h var session structures (see below)
Format of structure "session":
Offset Size Description
00h BYTE local session number
01h BYTE state
01h listen pending
02h call pending
03h session established
04h hangup pending
05h hangup done
06h session aborted
02h 16 BYTEs local name
12h 16 BYTEs remote name
22h BYTE number of outstanding receives
23h BYTE number of outstanding sends/chainsends
----------5C---------------------------------
INT 5C - TOPS INTERFACE
ES:BX -> Network Control Block
Note: TOPS card uses DMA 1, 3 or none.
----------5C---------------------------------
INT 5C - ATALK.SYS - AppleTalk INTERFACE
DX:BX -> control block (see below)
Return: none
Notes: this driver can use any interrupt from 5Ch to 70h
the signature 'AppleTalk' appears 16 bytes prior to the interrupt
handler; this serves as the installation check
Format of AppleTalk control block:
Offset Size Description
00h WORD command code
01h "AT_INIT" initialize the driver
02h "AT_KILL"
03h "AT_GETNETINFO" get current network info incl init status
04h "AT_GETCLOCKTICKS"
05h "AT_STARTTIMER"
06h "AT_RESETTIMER"
07h "AT_CANCELTIMER"
10h "LAP_INSTALL"
11h "LAP_REMOVE"
12h "LAP_WRITE"
13h "LAP_READ"
14h "LAP_CANCEL"
20h "DDP_OPENSOCKET"
21h "DDP_CLOSESOCKET"
22h "DDP_WRITE"
23h "DDP_READ"
24h "DDP_CANCEL"
30h "NBP_REGISTER"
31h "NBP_REMOVE"
32h "NBP_LOOKUP"
33h "NBP_CONFIRM"
34h "NBP_CANCEL"
35h "ZIP_GETZONELIST"
36h "ZIP_GETMYZONE"
37h "ZIP_TAKEDOWN"
38h "ZIP_BRINGUP"
40h "ATP_OPENSOCKET"
41h "ATP_CLOSESOCKET"
42h "ATP_SENDREQUEST"
43h "ATP_GETREQUEST"
44h "ATP_SENDRESPONSE"
45h "ATP_ADDRESPONSE"
46h "ATP_CANCELTRANS"
47h "ATP_CANCELRESPONSE"
48h "ATP_CANCELREQUEST"
50h "ASP_GETPARMS"
51h "ASP_CLOSESESSION"
52h "ASP_CANCEL"
53h "ASP_INIT"
54h "ASP_KILL"
55h "ASP_GETSESSION"
56h "ASP_GETREQUEST"
57h "ASP_CMDREPLY"
58h "ASP_WRTCONTINUE"
59h "ASP_WRTREPLY"
5Ah "ASP_CLOSEREPLY"
5Bh "ASP_NEWSTATUS"
5Ch "ASP_ATTENTION"
5Dh "ASP_GETSTATUS"
5Eh "ASP_OPENSESSION"
5Fh "ASP_COMMAND"
60h "ASP_WRITE"
61h "ASP_GETATTENTION"
70h "PAP_OPEN"
71h "PAP_CLOSE"
72h "PAP_READ"
73h "PAP_WRITE"
74h "PAP_STATUS"
75h "PAP_REGNAME"
76h "PAP_REMNAME"
77h "PAP_INIT"
78h "PAP_NEWSTATUS"
79h "PAP_GETNEXTJOB"
7Ah "PAP_KILL"
7Bh "PAP_CANCEL"
or with the following flags
8000h start command then return
4000h wait for interrupt service to complete
02h WORD returned status
0000h success (already initialized if func 01h)
04h DWORD pointer to completion function
08h WORD network number
0Ah BYTE node ID
---if general func (01h,03h), control block continues:
0Bh BYTE "inf_abridge"
0Ch WORD "inf_config"
0Eh DWORD pointer to buffer
12h WORD buffer size
---if DDP function (20h-24h), control block continues:
0Bh BYTE "ddp_addr_socket"
0Ch BYTE "ddp_socket"
0Dh BYTE "ddp_type"
0Eh DWORD pointer to buffer
12h WORD buffer size
14h BYTE "ddp_chksum"
---if Name Binding Protocol (30h-34h), control block continues:
0Bh BYTE "nbp_addr_socket"
0Ch WORD "nbp_toget"
0Eh DWORD pointer to buffer
12h WORD buffer size
14h BYTE "nbp_interval"
15h BYTE "nbp_retry"
16h DWORD "nbp_entptr"
---if AppleTalk Transaction Protocol (42h), control block continues:
0Bh BYTE "atp_addr_socket"
0Ch WORD "atp_socket"
0Eh DWORD pointer to buffer
12h WORD buffer size
14h BYTE "atp_interval"
15h BYTE "atp_retry"
16h BYTE ATP flags
bit 5: exactly one transaction
17h BYTE "atp_seqbit"
18h BYTE transaction ID
19h 4 BYTEs ATP user bytes
1Dh BYTE number of BDS buffers
1Eh BYTE number of BDS responses
1Fh DWORD pointer to BDS buffers (see below)
Format of Name Binding Protocol Name-to-Address binding entries for NBP_LOOKUP:
Offset Size Description
00h WORD "tup_address_network"
02h BYTE "tup_address_notid"
03h BYTE "tup_address_socket"
04h BYTE "tup_enum"
05h 99 BYTEs name
Format of BDS entries:
Offset Size Description
00h DWORD pointer to buffer
04h WORD size of buffer
06h WORD BDS data size
08h 4 BYTEs "bds_userbytes"
----------5C---------------------------------
INT 5C - IBM 802.2 INTERFACE (LLC)
ES:BX -> CCB
Return: none
Format of CCB:
Offset Size Description
00h BYTE adapter
01h BYTE command code
02h BYTE return code
03h BYTE work
04h DWORD pointer to ???
08h DWORD pointer to completion function???
0Ch DWORD pointer to parameters???
----------5C---------------------------------
INT 5C - $25 LAN - INSTALLATION CHECK
Notes: current versions only check whether the vector is 0000h:0000h or not
future versions are supposed to have the signature "NET" in the three
bytes preceding the INT 5C handler
----------5C04-------------------------------
INT 5C - $25 LAN - CHECK IF CONNECTION ALIVE
AH = 04h
AL = COM port (0 = default)
CX = wait count in character times (should be at least 100)
Return: ZF set if link alive
----------5D---------------------------------
INT 5D - IRQ13 relocated by DESQview 2.26+
Note: this is the default, but other INTs may be used (see INT 50"DESQview")
SeeAlso: INT 50"DESQview",INT 75
----------5D---------------------------------
INT 5D - IRQ5 relocated by DoubleDOS
SeeAlso: INT 0D,INT 5C"DoubleDOS"
----------5E---------------------------------
INT 5E - IRQ14 relocated by DESQview 2.26+
Note: this is the default, but other INTs may be used (see INT 50"DESQview")
SeeAlso: INT 50"DESQview",INT 76
----------5E---------------------------------
INT 5E - IRQ6 relocated by DoubleDOS
SeeAlso: INT 0E,INT 5D"DoubleDOS"
----------5F---------------------------------
INT 5F - IRQ15 relocated by DESQview 2.26+
Note: this is the default, but other INTs may be used (see INT 50"DESQview")
SeeAlso: INT 50"DESQview",INT 77
----------5F---------------------------------
INT 5F - IRQ7 relocated by DoubleDOS
SeeAlso: INT 0F,INT 5E"DoubleDOS"
----------5F00-------------------------------
INT 5F - HP 95LX GRAPHICS PRIMITIVES - SET VIDEO MODE
AH = 00h
AL = video mode
07h text, system manager compliant
20h 240x128 mono graphics, system manager compliant
87h text, not system manager compliant
A0h 240x128 mono graphics, not system manager compliant
Note: the defaults after setting the mode to graphics are (0,0) logical
origin, full-screen clip region, (0,0) pen location, pen color 1,
pixel replacement FORCE, line type and fill mask all bits set
SeeAlso: INT 0F"HP 95LX",INT 10/AH=00h,INT 15/AX=4DD4h
----------5F01-------------------------------
INT 5F - HP 95LX GRAPHICS PRIMITIVES - SET FILL MASK
AH = 01h
ES:DI -> 8-byte fill mask
Note: the fill mask represents an 8x8 pixel box and is repeated as necessary
when drawing filled rectangles; it is always aligned with the byte
boundaries of video memory, regardless of the actual boundaries of
the rectangle
SeeAlso: AH=02h
----------5F02-------------------------------
INT 5F - HP 95LX GRAPHICS PRIMITIVES - GET CURRENT GRAPHICS INFORMATION
AH = 02h
ES:DI -> graphics info record (see below)
Return: DX:AX -> filled graphics info record (for return to high-level langs)
Format of graphics info record:
Offset Size Description
00h BYTE current video mode
01h BYTE default video mode
02h WORD display width in pixels
04h WORD display height in pixels
06h WORD current pen column
08h WORD current pen row
0Ah WORD current line type
0Ch WORD current replacement rule
0Eh WORD current pen color
10h WORD current leftmost column of clip region
12h WORD current rightmost column of clip region
14h WORD current topmost row of clip region
16h WORD current bottommost row of clip region
18h WORD current column of logical origin
1Ah WORD current row of logical origin
1Ch 8 BYTEs current fill mask
----------5F03-------------------------------
INT 5F - HP 95LX GRAPHICS PRIMITIVES - SET LOGICAL ORIGIN
AH = 03h
CX = column
DX = row
SeeAlso: AH=04h
----------5F04-------------------------------
INT 5F - HP 95LX GRAPHICS PRIMITIVES - SET CLIP REGION
AH = 04h
CX = left-most column
DX = top-most row
SI = right-most column
DI = bottom-most row
SeeAlso: AH=03h
----------5F05-------------------------------
INT 5F - HP 95LX GRAPHICS PRIMITIVES - DRAW RECTANGLE
AH = 05h
AL = fill type
00h outline, using current line type and color
01h solid, using current color
02h pattern, using current fill mask and color
DX,CX = row,column of other corner of rectangle
Note: the rectangle is drawn starting at the current pen position
SeeAlso: AH=01h,AH=06h,AH=07h
----------5F06-------------------------------
INT 5F - HP 95LX GRAPHICS PRIMITIVES - DRAW LINE
AH = 06h
DX,CX = row,column of end point
Note: the line is drawn starting at the current pen position
SeeAlso: AH=05h,AH=07h
----------5F07-------------------------------
INT 5F - HP 95LX GRAPHICS PRIMITIVES - PLOT POINT
AH = 07h
DX,CX = row,column of point
Note: also sets pen position to the specified point
SeeAlso: AH=06h,AH=08h,AH=0Ch
----------5F08-------------------------------
INT 5F - HP 95LX GRAPHICS PRIMITIVES - MOVE PEN
AH = 08h
DX,CX = row,column of new pen position
SeeAlso: AH=07h,AH=09h
----------5F09-------------------------------
INT 5F - HP 95LX GRAPHICS PRIMITIVES - SET PEN COLOR
AH = 09h
AL = new color (00h = white, 01h = black)
SeeAlso: AH=08h,AH=0Ah,AH=0Bh
----------5F0A-------------------------------
INT 5F - HP 95LX GRAPHICS PRIMITIVES - SET REPLACEMENT RULE
AH = 0Ah
AL = new replacement rule
00h force
01h AND
02h OR
03h XOR
SeeAlso: AH=01h,AH=09h,AH=0Bh
----------5F0B-------------------------------
INT 5F - HP 95LX GRAPHICS PRIMITIVES - SET LINE TYPE
AH = 0Bh
CX = new line type
Note: the line type specifies 16 bits which are repeated over and over while
drawing the pixels of a line
SeeAlso: AH=09h,AH=0Ah
----------5F0C-------------------------------
INT 5F - HP 95LX GRAPHICS PRIMITIVES - GET PIXEL
AH = 0Ch
DX,CX = row,column of pixel to read
Return: AX = pixel color
SeeAlso: AH=07h
----------5F0D-------------------------------
INT 5F - HP 95LX GRAPHICS PRIMITIVES - GET IMAGE
AH = 0Dh
DX,CX = row,column of first corner
BP,SI = row,column of second corner
ES:DI -> image buffer (see below)
Note: the specified corners are included in the saved image
SeeAlso: AH=0Eh
Format of image buffer:
Offset Size Description
00h WORD number of planes (always 01h on HP 95LX)
02h WORD number of bits/pixel (always 01h on HP 95LX)
04h WORD image width in pixels
06h WORD image height in pixels
08h N BYTEs image data
requires (WIDTH+7)/8 * HEIGHT bytes
----------5F0E-------------------------------
INT 5F - HP 95LX GRAPHICS PRIMITIVES - PUT IMAGE
AH = 0Eh
AL = replacement rule
bit 2: invert image before applying rule
bits 1-0: 00 force
01 AND
10 OR
11 XOR
DX,CX = row,column of top left corner
ES:DI -> image buffer (see AH=0Dh)
Note: if the specified image does not fit completely on the screen, this call
does nothing
SeeAlso: AH=0Dh
----------5F0F-------------------------------
INT 5F - HP 95LX GRAPHICS PRIMITIVES - WRITE TEXT
AH = 0Fh
AL = rotate flag (if nonzero, rotate 90 degrees counter-clockwise)
DX,CX = row,column of first character's top left corner
ES:DI -> ASCIZ text
----------60---------------------------------
INT 60 - reserved for user interrupt
----------60---------------------------------
INT 60 - VIRUS - "Zero Bug" - INSTALLATION CHECK
The "Zero Bug" virus hooks this vector. It considers itself installed if
offset 103h of the handler's segment contains the bytes "ZE"
SeeAlso: INT 32,INT 61"SEMTEX"
----------60---------------------------------
INT 60 - Adaptec and OMTI controllers - DRIVE 0 DATA
SeeAlso: INT 61"Adaptec",INT 62"Adaptec",INT 63"Adaptec",INT 64"Adaptec"
Notes: this vector stores the first four bytes of the parameter table for
hard disk 0
these vectors are used by the following Adaptec controllers:
ACB 2370 A/B/C, ACB 2372 A/B/C, ACB 2333 A/B, 2322B-8, 2322B-16
these vectors are NOT used by the following Adaptec controllers:
ACB 2310, ACB 2312, ACB 2320D, ACB 2322D
----------60---------------------------------
INT 60 - Atari Portfolio - USER INTERFACE FUNCTIONS
supplies a number of subfunctions which perform such functions as drawing
boxes and menus, and provide input line editing
SeeAlso: INT 61"Atari"
----------60---------------------------------
INT 60 - PC-IPC API
STACK: DWORD pointer to parameter block (see below)
Return: STACK: unchanged
Notes: PC-IPC is a shareware TSR by Donnelly Software Engineering which allows
communication between independent programs
INT 60 is the default, any interrupt vector may be used by specifying
the vector on the commandline
Format of parameter block:
Offset Size Description
00h WORD caller's ID
02h WORD to ID
04h WORD command code (see below)
06h WORD returned status
bit 0: unused
bit 1: IPC enabled
bit 2: IPC installed
bit 3: error
bit 4: message(s) available
08h WORD returned error code (see below)
0Ah WORD size of data
0Ch DWORD pointer to data buffer
Values of command code:
01h "IPC_CMND_INQUIRE" inquire current status
set status field, writes WORD to data buffer containing free
message space in bytes, and sets the "size" field to the
number of messages waiting
02h "IPC_CMND_ENABLE" reenable PC-IPC
ignored unless called with the same ID that disabled PC-IPC
03h "IPC_CMND_DISABLE" disable PC-IPC
04h "IPC_CMND_INSTALL" reset PC-IPC
06h "IPC_CMND_RDATA" read data
returns first message in data buffer, sets "size" to message
length and "to ID" field to sender's ID
if no messages available, bit 4 of status is cleared and "size"
is set to zero
07h "IPC_CMND_SDATA" send data
08h "IPC_CMND_REQID" require user ID
create a new recognized ID and return in "caller's ID" field
09h "IPC_CMND_DELID" cancel user ID
delete caller's ID from pool of recognized IDs
0Ah "IPC_CMND_RDATAW" read data, wait if no messages available
0Bh "IPC_CMND_VERS" get PC-IPC version
string representing version returned in data buffer, "size"
field set to length of string
Values for error code:
00h no error
01h invalid command or parameter
02h only process 0 can install/reset IPC
03h process can not install/reset IPC
04h IPC is not enabled
05h process can not disable IPC
06h invalid destination process ID
07h invalid sending process ID
08h invalid data destination
09h no more process IDs available
0Ah can not relinquish that process ID
0Bh message space is full
0Ch IPC is not installed
----------60---------------------------------
INT 60 - Tangram Arbiter - API
Notes: Arbiter may use any interrupt from 60h to 66h (parameterized)
identified by string "@ARB_API" immediately following a short jump at
the interrupt handler address
Arbiter makes a PC disk look like a slow disk over an SNA link to an
IBM mainframe
----------60---------------------------------
INT 60 U - INTRSPY/CMDSPY API
Notes: INTRSPY will hook the first available interrupt in the range 60h-67h.
The installation check is to
a) determine that the handler is an IRET instruction
b) the signature 0Dh "INTRSPY vN.NN" immediately precedes the handler
If INTRSPY is installed, the DWORD immediately after the IRET stores
its entry point.
INTRSPY is a script-driven debugger included with the book
_Undocumented_DOS_.
Call INTRSPY entry point with:
AH = function
00h ???
01h set current directory (for use in reporting)
ES:DI -> counted string containing directory name (max 79 char)
02h set name of script file
ES:DI -> counted string containing file name (max 79 chars)
03h set script arguments
ES:DI -> counted string containing arguments (max 79 chars)
04h get directory set with function 01h
ES:DI -> 80-byte buffer for directory name
05h get name of script file
ES:DI -> 80-byte buffer for script filename
06h get script arguments
ES:DI -> 80-byte buffer for script arguments
07h get ???
CL = 00h-15h specifies what to get
ES:DI -> WORD to be set with desired value on return
08h get ???
ES:DI -> WORD to be set with returned value
09h get ???
ES:DI -> WORD to be set with returned value
0Bh store code for interrupt handler???
ES:DI -> data
CX = number of bytes
0Ch ???
ES:DI -> ???
0Dh get ???
ES:DI -> BYTE to be set with returned value
0Eh set ??? flag
0Fh clear ??? flag
10h ???
Return: AL = 04h or 05h if failed
11h ???
Return: AL = 05h if failed
12h get ???
ES:DI -> buffer
Return: CX = number of bytes returned in buffer
13h ???
Return: AH = 00h
AL = status
00h successful
01h invalid function
02h ???
03h ???
04h ???
05h ???
----------60---------------------------------
INT 60 U - PC/370 v4.2 - ???
???
Return: ???
Notes: PC/370 is an IBM 370 emulator by Donald S. Higgins
this is the default interrupt, however the documentation includes
instructions for patching the system for another interrupt
SeeAlso: INT 2F/AX=7F24h,INT DC"PC/370"
----------60---------------------------------
INT 60 - JPI TopSPEED Modula-2 v1 - PROCEDURE ENTRY TRAP
SeeAlso: INT 61"JPI"
----------60---------------------------------
INT 60 - FTP Packet Driver - PC/TCP Packet Driver Specification
Notes: The handler for the interrupt will start with a 3-byte jump
instruction, followed by the ASCIZ string "PKT DRVR" (the
terminating NUL is significant).
To find the interrupt being used by the driver, an application should
scan through interrupt vectors 60h to 80h (20h through FFh for
v1.10+ of the specification) until it finds one with the "PKT DRVR"
string.
AH values of 80h to FFh have been reserved for user-defined additions.
----------60----DI0100-----------------------
INT 60 u - HP 95LX System Manager - WAIT FOR EVENT
DI = 0100h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to event record (see below)
Return: event record filled
STACK unchanged
Note: this call will timeout after about 500ms
SeeAlso: INT 15/AX=4DD4h,INT 60/DI=0101h,INT 61"HP 95LX",INT 62"HP 95LX"
Format of event record:
Offset Size Description
00h WORD event type
00h no events
01h keystroke available
02h Ctrl-Break
03h reactivation (always follows deactivation event)
04h about to deactivate (sleep)
next get-event call will not return until reactivated
05h forced application termination
06h 1-2-3 bridge service request (only given to 1-2-3)
07h request to grow
08h request to shrink
09h application's alarm expired
0Ah daily chance to set an alarm
0Bh system date or time has been changed
02h WORD ASCII code page 850 translation of keystroke
or grow/shrink amount in paragraphs or 0000h if error
or alarm expiration data
04h BYTE scan code from BIOS
05h BYTE shift key states at time keystroke is retrieved
06h WORD LICS translation of keystroke
08h BYTE function key number (1-2-3 only)
09h DWORD pointer to 1-2-3 bridge record (see INT 60/DI=0104h)
or pointer to time change structure (see below)
Note: if the System Manager is waiting the conclusion of a bridge service
or grow/shrink call and the event type field is set to FFFFh on
entry, the SysMgr will resume
Format of time change structure:
Offset Size Description
00h WORD old year
02h BYTE old month
03h BYTE old date
04h BYTE old day
05h BYTE old hour
06h BYTE old minute
07h BYTE old second
08h BYTE old hundredth of a second
09h 9 BYTEs new time in same format as old time
----------60----DI0101-----------------------
INT 60 u - HP 95LX System Manager - CHECK FOR EVENT
DI = 0101h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to event record (INT 60/DI=0100h)
Return: event record filled
STACK unchanged
Note: this call returns immediately if no event is available
SeeAlso: INT 60/DI=0100h
----------60----DI0102-----------------------
INT 60 u - HP 95LX System Manager - "SH_STATUS"
DI = 0102h
STACK: 2 WORDs unused dummies (for calls from high level languages)
Return: ???
STACK unchanged
----------60----DI0104-----------------------
INT 60 u - HP 95LX System Manager - LOTUS 1-2-3 BRIDGE SERVICES
DI = 0104h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to bridge record (see below)
Return: ???
STACK unchanged
Format of bridge record:
Offset Size Description
00h WORD function code
00h test
01h get range
02h "GETRANGE_ADDR"
03h "SETRANGE_ADDR"
04h "GETRANGE_DATA"
05h "SETRANGE_DATA"
06h recalculate
07h get cursor
08h set cursor
09h redisplay
0Ah cell type
0Bh "CALCTYPE"
02h WORD return code from 1-2-3
04h 16 BYTEs ASCII range name
14h WORD start column of range
16h WORD start row of range
18h WORD end column of range
1Ah WORD end row of range
1Ch WORD order in which data is placed in buffer
1Eh WORD buffer size
20h WORD offset within bridge record's segment of buffer for cell data
----------60----DI0105-----------------------
INT 60 u - HP 95LX System Manager - FLUSH KEYBOARD BUFFER
DI = 0105h
STACK: 2 WORDs unused dummies (for calls from high level languages)
Return: ???
STACK unchanged
----------60----DI0106-----------------------
INT 60 u - HP 95LX System Manager - YIELD CPU
DI = 0106h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
Return: ???
STACK unchanged
SeeAlso: INT 15/AX=1000h,INT 2F/AX=1680h
----------60----DI0107-----------------------
INT 60 u - HP 95LX System Manager - "NO_FINI" - REFUSE TERMINATION REQUEST
DI = 0107h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
Return: ???
STACK unchanged
SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
----------60----DI0200-----------------------
INT 60 u - HP 95LX System Manager - SETUP MENU
DI = 0200h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to menu data (see below)
DWORD pointer to ???
WORD number of items on menu???
WORD ???
DWORD pointer to ???
WORD ???
DWORD pointer to ???
Return: ???
STACK unchanged
SeeAlso: INT 15/AX=4DD4h,INT 60/DI=0201h,INT 60/DI=0203h,INT 60/DI=0205h
Format of menu data:
Offset Size Description
00h 80 BYTEs first line of menu text
50h 80 BYTEs second line of menu text
A0h 80 BYTEs third line of menu text
F0h WORD number of keywords
F2h WORD index of currently highlighted keyword or FFFFh
F4h WORD single prompt on top line if nonzero
F6h 20 BYTEs which line each of 20 keywords is located on
10Ah 20 BYTEs offset of each of 20 keywords within its line
11Eh 20 BYTEs length of each of 20 keywords
132h 20 BYTEs first letter of each of 20 keywords
146h 20 WORDs offsets of long prompts for each of 20 keywords
----------60----DI0201-----------------------
INT 60 u - HP 95LX System Manager - DISPLAY OR REDISPLAY MENU
DI = 0201h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to menu data (see INT 60/DI=0200h)
Return: ???
STACK unchanged
SeeAlso: INT 60/DI=0200h,INT 60/DI=0202h,INT 60/DI=0206h
----------60----DI0202-----------------------
INT 60 u - HP 95LX System Manager - "MENU_ON" - ENABLE PROCESSING OF MENU
DI = 0202h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to menu data (see INT 60/DI=0200h)
Return: ???
STACK unchanged
SeeAlso: INT 60/DI=0200h,INT 60/DI=0201h,INT 60/DI=0203h
----------60----DI0203-----------------------
INT 60 u - HP 95LX System Manager - REMOVE MENU
DI = 0203h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to menu data (see INT 60/DI=0200h)
Return: ???
STACK unchanged
SeeAlso: INT 60/DI=0201h,INT 60/DI=0202h,INT 60/DI=0204h,INT 60/DI=0208h
----------60----DI0204-----------------------
INT 60 u - HP 95LX System Manager - LET SYSTEM MANAGER HANDLE MENU KEYSTROKE
DI = 0204h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to menu data (see INT 60/DI=0200h)
WORD keystroke
DWORD pointer to WORD to receive selection number
Return: buffer for selection number filled with index of selected menu item or
FFFFh if no final selection yet
STACK unchanged
SeeAlso: INT 60/DI=0200h,INT 60/DI=0202h,INT 60/DI=0207h
----------60----DI0205-----------------------
INT 60 u - HP 95LX System Manager - INITIALIZE FILE SELECTION MENU
DI = 0205h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to file menu structure (see below)
DWORD pointer to edit record (see INT 60/DI=0400h)
DWORD pointer to wildcard filespec for initial file list
WORD row???
WORD column???
Return: ???
STACK unchanged
SeeAlso: INT 60/DI=0200h,INT 60/DI=0206h,INT 60/DI=0208h
Format of file menu structure:
Offset Size Description
00h DWORD pointer to ASCIZ base directory name
04h DWORD pointer to ASCIZ file pattern (wildcard filespec)
08h DWORD pointer to file list workspace, at least 1024 bytes (see below)
0Ch WORD size of file list workspace in bytes
0Eh WORD starting row (-3 is topmost, 0 is first non-"reserved" line)
10h WORD starting column
12h WORD number of lines
14h WORD number of columns
16h WORD number of files displayed on each line
---the remaining fields are initialized by the System Manager---
18h WORD 0000h if first edit character, else multiline
1Ah WORD number of files in file list
1Ch WORD max files workspace has room for
1Eh WORD file at top of list
20h WORD index of file to highlight
22h WORD index of file to unhighlight
24h WORD current focus (01h FMENU, 02h EDIT)
Format of file list workspace entry:
Offset Size Description
00h BYTE file attributes
01h WORD file time (see INT 21/AX=5700h)
03h WORD file date (see INT 21/AX=5700h)
05h DWORD file size
09h 13 BYTEs ASCIZ filename
----------60----DI0206-----------------------
INT 60 u - HP 95LX System Manager - DISPLAY/REDISPLAY FILE SELECTION MENU
DI = 0206h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to file menu structure (see INT 60/DI=0205h)
DWORD pointer to edit record (see INT 60/DI=0400h)
Return: ???
STACK unchanged
SeeAlso: INT 60/DI=0205h
----------60----DI0207-----------------------
INT 60 u - HP 95LX System Manager - LET SYSMGR PROCESS FILE SEL MENU KEYSTROKE
DI = 0207h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to file menu structure (see INT 60/DI=0205h)
DWORD pointer to edit record (see INT 60/DI=0400h)
WORD keystroke
Return: AX = status
0000h keystroke processed, call INT 60/DI=0206h to refresh menu
0001h redisplay application area before refreshing menu
0002h user confirmed selection, filename is in edit record's buffer
0003h user aborted menu
FFFBh bad filename
FFFCh bad directory
FFFDh bad drive
FFFEh unknown keystroke
FFFFh keystroke known but invalid in current context
STACK unchanged
SeeAlso: INT 60/DI=0205h,INT 60/DI=0208h
----------60----DI0208-----------------------
INT 60 u - HP 95LX System Manager - REMOVE FILE SELECTION MENU
DI = 0208h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to file menu structure (see INT 60/DI=0205h)
DWORD pointer to edit record (see INT 60/DI=0400h)
Return: ???
STACK unchanged
SeeAlso: INT 15/AX=4DD4h,INT 60/DI=0205h,INT 60/DI=0206h
----------60----DI0300-----------------------
INT 60 u - HP 95LX System Manager - DISPLAY STRING
DI = 0300h
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD starting row (-3 is topmost, 0 is first user line)
WORD starting column
DWORD pointer to string
WORD length of string
WORD display style: 0000h normal, 0001h reverse video
WORD "OSTYLE"
Return: ???
STACK unchanged
SeeAlso: INT 60/DI=0F03h,INT 60/DI=1005h
----------60----DI0301-----------------------
INT 60 u - HP 95LX System Manager - CLEAR PORTION OF SCREEN
DI = 0301h
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD starting row (-3 is topmost, 0 is first user line)
WORD starting column
WORD number of rows
WORD number of columns
Return: ???
STACK unchanged
SeeAlso: INT 60/DI=0302h,INT 60/DI=1005h
----------60----DI0302-----------------------
INT 60 u - HP 95LX System Manager - SCROLL PORTION OF SCREEN
DI = 0302h
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD starting row???
WORD starting column???
WORD height of scroll region???
WORD width of scroll region???
WORD number of lines to scroll region???
Return: ???
STACK unchanged
SeeAlso: INT 60/DI=0301h
----------60----DI0303-----------------------
INT 60 u - HP 95LX System Manager - SCREEN SERVICE "M_XCHG"
DI = 0303h
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD ???
WORD ???
WORD ???
WORD ???
DWORD pointer to ???
Return: ???
STACK unchanged
----------60----DI0304-----------------------
INT 60 u - HP 95LX System Manager - SCREEN SERVICE "M_CHRATTR"
DI = 0304h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
WORD ???
Return: ???
STACK unchanged
----------60----DI0305-----------------------
INT 60 u - HP 95LX System Manager - SCREEN SERVICE "M_CHRRVRT"
DI = 0305h
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD ???
WORD ???
DWORD pointer to ???
WORD ???
Return: ???
STACK unchanged
----------60----DI0307-----------------------
INT 60 u - HP 95LX System Manager - SCREEN SERVICE "M_CHRINV"
DI = 0307h
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD ???
WORD ???
WORD ???
Return: ???
STACK unchanged
----------60----DI0308-----------------------
INT 60 u - HP 95LX System Manager - SCREEN SERVICE "M_ROWS_COLS"
DI = 0308h
STACK: 2 WORDs unused dummies (for calls from high level languages)
Return: ???
STACK unchanged
----------60----DI0309-----------------------
INT 60 u - HP 95LX System Manager - SET SCREEN (VIDEO???) MODE
DI = 0309h
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD new mode
Return: ???
STACK unchanged
----------60----DI030A-----------------------
INT 60 u - HP 95LX System Manager - GET SCREEN (VIDEO???) MODE
DI = 030Ah
STACK: 2 WORDs unused dummies (for calls from high level languages)
Return: ???
STACK unchanged
----------60----DI030B-----------------------
INT 60 u - HP 95LX System Manager - SET CURSOR POSITION
DI = 030Bh
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD row (-3 is topmost, 0 is first non-reserved line)
WORD column
Return: ???
STACK unchanged
Note: cursor is hidden if the specified position is not on the physical
display
SeeAlso: INT 10/AH=02h,INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
----------60----DI0400-----------------------
INT 60 u - HP 95LX System Manager - "EDIT_INIT"
DI = 0400h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to edit record (see below)
DWORD pointer to string to be edited
WORD initial length of string being edited
WORD maximum length of edited string
WORD row of edit field
WORD leftmost column of edit field
Return: ???
STACK unchanged
Format of edit record:
Offset Size Description
00h WORD current length of edit buffer
02h BYTE flag for special processing on first character
03h BYTE flags
bit 0: tab handling
04h WORD editing in prompt window?
06h DWORD pointer to top line of prompt window message
0Ah WORD length of top line of prompt
0Ch DWORD pointer to second line of prompt window message
10h WORD length of second line of prompt
12h 80 BYTEs workspace for editing
62h 2 WORDs line array needed for multi-line editing
66h 36 BYTEs multi-line edit record (see below)
8Ah WORD displayable columns
Format of multi-line edit record:
Offset Size Description
00h DWORD pointer to user-supplied edit buffer
04h WORD length of edit buffer
06h WORD current cursor position
08h WORD starting row of edit area (-3 is topmost, 0 is first user line)
0Ah WORD starting column of edit area
0Ch WORD height of edit area
0Eh WORD width of edit area
10h WORD current top row (-3 is topmost, 0 is first user line)
12h WORD number of rows displayable
14h BYTE cursor column
15h BYTE 01h if buffer has been modified
16h BYTE first displayable column (ticker fields only)
17h BYTE 01h if wordwrap enabled, FFh if ticker field
18h DWORD pointer to array of line starts (at least one bigger than edit
area is high)
1Ch BYTE currently marking?
1Dh BYTE flag
1Eh WORD offset of mark start
20h WORD offset of mark end (inclusive)
22h WORD displayable columns
----------60----DI0401-----------------------
INT 60 u - HP 95LX System Manager - EDIT ON TOP LINE
DI = 0401h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to edit record (see INT 60/DI=0400h)
DWORD pointer to string to edit
WORD initial length of string being edited
WORD maximum length of edited string
DWORD pointer to first line of prompt
WORD length of first line
DWORD pointer to second line of prompt
WORD length of second line
Return: ???
STACK unchanged
----------60----DI0402-----------------------
INT 60 u - HP 95LX System Manager - DISPLAY OR REDISPLAY EDIT FIELD
DI = 0402h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to edit record (see INT 60/DI=0400h)
Return: ???
STACK unchanged
----------60----DI0403-----------------------
INT 60 u - HP 95LX System Manager - LET SYSTEM MANAGER PROCESS EDITING KEYSTROK
DI = 0403h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to edit record (see INT 60/DI=0400h)
WORD keystroke
DWORD pointer to WORD buffer for result code
Return: result code buffer filled with 0001h if editing complete
STACK unchanged
----------60----DI0404-----------------------
INT 60 u - HP 95LX System Manager - "MDIT_INI"
DI = 0404h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
WORD ???
WORD ???
WORD ???
WORD ???
DWORD pointer to ???
WORD ???
WORD ???
WORD ???
DWORD pointer to ???
Return: ???
STACK unchanged
----------60----DI0405-----------------------
INT 60 u - HP 95LX System Manager - "MDIT_DIS"
DI = 0405h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
Return: ???
STACK unchanged
----------60----DI0406-----------------------
INT 60 u - HP 95LX System Manager - "MDIT_KEY"
DI = 0406h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
WORD ???
Return: ???
STACK unchanged
----------60----DI0407-----------------------
INT 60 u - HP 95LX System Manager - "MDIT_FIL"
DI = 0407h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
DWORD pointer to ???
Return: ???
STACK unchanged
----------60----DI0408-----------------------
INT 60 u - HP 95LX System Manager - "MDIT_MARK"
DI = 0408h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
Return: ???
STACK unchanged
----------60----DI0409-----------------------
INT 60 u - HP 95LX System Manager - "MDIT_UNMARK"
DI = 0409h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
Return: ???
STACK unchanged
----------60----DI040A-----------------------
INT 60 u - HP 95LX System Manager - "MDIT_CUTMARK"
DI = 040Ah
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
Return: ???
STACK unchanged
----------60----DI040B-----------------------
INT 60 u - HP 95LX System Manager - "MDIT_INS_STR"
DI = 040Bh
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
DWORD pointer to ???
WORD ???
Return: ???
STACK unchanged
SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
----------60----DI0500-----------------------
INT 60 u - HP 95LX System Manager - OPEN FILE
DI = 0500h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to file state record (see below)
DWORD pointer to filename
WORD length of filename
WORD ???
WORD suppress buffering if nonzero
Return: AX = status
STACK unchanged
SeeAlso: INT 60/DI=0501h,INT 60/DI=0502h,INT 60/DI=0508h
Format of file state record:
Offset Size Description
00h WORD DOS file handle
02h WORD flags
bit 0: buffer contents valid
bit 1: buffer is dirty and must be written
bit 2: unbuffered I/O
bit 3: file is a character device
04h DWORD current DOS physical file offset (FFFFFFFFh if unknown)
08h DWORD DOS file offset of start of buffer
0Ch DWORD effective file offset as seen by caller
10h WORD number of bytes in file buffer
---buffered I/O only---
12h 512 BYTEs file buffer
----------60----DI0501-----------------------
INT 60 u - HP 95LX System Manager - OPEN FILE IN READ-ONLY MODE
DI = 0501h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to file state record (see INT 60/DI=0500h)
DWORD pointer to filename
WORD length of filename
WORD ???
WORD suppress buffering if nonzero
Return: AX = status
STACK unchanged
SeeAlso: INT 60/DI=0500h
----------60----DI0502-----------------------
INT 60 u - HP 95LX System Manager - CREATE NEW FILE
DI = 0502h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to file state record (see INT 60/DI=0500h)
DWORD pointer to filename
WORD length of filename
WORD ???
WORD suppress buffering if nonzero
Return: AX = status
STACK unchanged
SeeAlso: INT 60/DI=0500h,INT 60/DI=0503h
----------60----DI0503-----------------------
INT 60 u - HP 95LX System Manager - CREATE OR TRUNCATE FILE
DI = 0503h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to file state record (see INT 60/DI=0500h)
DWORD pointer to filename
WORD length of filename
WORD ???
WORD suppress buffering if nonzero
Return: AX = status
STACK unchanged
SeeAlso: INT 60/DI=0502h
----------60----DI0504-----------------------
INT 60 u - HP 95LX System Manager - READ FROM FILE
DI = 0504h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to file state record (see INT 60/DI=0500h)
DWORD pointer to data buffer
WORD number of bytes to read
DWORD pointer to WORD in which to return actual bytes read
Return: ???
STACK unchanged
SeeAlso: INT 60/DI=0505h
----------60----DI0505-----------------------
INT 60 - HP 95LX System Manager - WRITE TO FILE
DI = 0505h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to file state record (see INT 60/DI=0500h)
DWORD pointer to data
WORD length of data
Return: AX = status
STACK unchanged
SeeAlso: INT 60/DI=0504h
----------60----DI0506-----------------------
INT 60 u - HP 95LX System Manager - SET FILE POSITION
DI = 0506h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to file state record (see INT 60/DI=0500h)
WORD ???
WORD ???
Return: ???
STACK unchanged
SeeAlso: INT 60/DI=0507h
----------60----DI0507-----------------------
INT 60 u - HP 95LX System Manager - GET FILE POSITION
DI = 0507h "M_TELL"
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to file state record (see INT 60/DI=0500h)
DWORD pointer to DWORD buffer for file position???
Return: ???
STACK unchanged
SeeAlso: INT 60/DI=0506h
----------60----DI0508-----------------------
INT 60 u - HP 95LX System Manager - CLOSE FILE
DI = 0508h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to file state record (see INT 60/DI=0500h)
Return: ???
STACK unchanged
SeeAlso: INT 60/DI=0500h
----------60----DI0509-----------------------
INT 60 u - HP 95LX System Manager - FILE SERVICE "M_SETPAT"
DI = 0509h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
DWORD pointer to ???
WORD ???
WORD ???
Return: ???
STACK unchanged
----------60----DI050A-----------------------
INT 60 u - HP 95LX System Manager - FILE SERVICE "M_MATCH"
DI = 050Ah
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
DWORD pointer to ???
Return: ???
STACK unchanged
Format of pattern match control block:
Offset Size Description
00h 43 BYTEs FindFirst data block (see INT 21/AH=4Eh)
2Bh 80 BYTEs full path name
7Bh BYTE offset of last component of filename
7Ch BYTE DOS function number (4Eh or 4Fh)
----------60----DI050B-----------------------
INT 60 u - HP 95LX System Manager - IDENTIFY FILENAME REFERENT
DI = 050Bh
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
WORD ???
WORD ???
DWORD pointer to ???
Return: ???
STACK unchanged
Values returned:
0000h nonexistent
0001h file
0002h directory
0003h character device
----------60----DI050C-----------------------
INT 60 u - HP 95LX System Manager - DELETE FILE
DI = 050Ch "M_DELETE"
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
WORD ???
WORD ???
Return: ???
STACK unchanged
----------60----DI050D-----------------------
INT 60 u - HP 95LX System Manager - RENAME FILE
DI = 050Dh
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
WORD ???
WORD ???
DWORD pointer to ???
WORD ???
WORD ???
Return: ???
STACK unchanged
----------60----DI050E-----------------------
INT 60 u - HP 95LX System Manager - FILE SERVICE "M_GETDIR"
DI = 050Eh
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD ???
DWORD pointer to ???
DWORD pointer to ???
Return: ???
STACK unchanged
----------60----DI050F-----------------------
INT 60 u - HP 95LX System Manager - FILE SERVICE "M_SETDIR"
DI = 050Fh
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
WORD ???
Return: ???
STACK unchanged
----------60----DI0510-----------------------
INT 60 u - HP 95LX System Manager - FILE SERVICE "M_VOLUME"
DI = 0510h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
DWORD pointer to ???
Return: ???
STACK unchanged
----------60----DI0511-----------------------
INT 60 u - HP 95LX System Manager - MAKE A SUBDIRECTORY
DI = 0511h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
WORD ???
WORD ???
Return: ???
STACK unchanged
----------60----DI0512-----------------------
INT 60 u - HP 95LX System Manager - REMOVE A SUBDIRECTORY
DI = 0512h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
WORD ???
WORD ???
Return: ???
STACK unchanged
----------60----DI0513-----------------------
INT 60 u - HP 95LX System Manager - GET DEFAULT DRIVE
DI = 0513h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ??? buffer for current drive
Return: ???
STACK unchanged
----------60----DI0514-----------------------
INT 60 u - HP 95LX System Manager - SET DEFAULT DRIVE
DI = 0514h
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD new drive
Return: ???
STACK unchanged
----------60----DI0515-----------------------
INT 60 u - HP 95LX System Manager - FILE SERVICE "M_FDATE"
DI = 0515h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
DWORD pointer to ???
Return: ???
STACK unchanged
----------60----DI0516-----------------------
INT 60 u - HP 95LX System Manager - FILE SERVICE "M_GET_SYSDIR"
DI = 0516h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
Return: ???
STACK unchanged
----------60----DI0517-----------------------
INT 60 u - HP 95LX System Manager - GET FILE ATTRIBUTES
DI = 0517h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
WORD ???
WORD ???
DWORD pointer to ??? buffer for file's attributes???
Return: ???
STACK unchanged
----------60----DI0518-----------------------
INT 60 u - HP 95LX System Manager - SET FILE ATTRIBUTES
DI = 0518h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
WORD ???
WORD ???
WORD new attributes???
Return: ???
STACK unchanged
----------60----DI0519-----------------------
INT 60 u - HP 95LX System Manager - FILE SERVICE "M_COMMON_OPEN"
DI = 0519h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
DWORD pointer to ???
WORD ???
WORD ???
WORD ???
WORD ???
WORD ???
Return: ???
STACK unchanged
----------60----DI051A-----------------------
INT 60 u - HP 95LX System Manager - FILE SERVICE "M_COPYDT"
DI = 051Ah
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
DWORD pointer to ???
Return: ???
STACK unchanged
----------60----DI051B-----------------------
INT 60 u - HP 95LX System Manager - FILE SERVICE "M_GETFDT"
DI = 051Bh
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
DWORD pointer to ???
Return: ???
STACK unchanged
----------60----DI051C-----------------------
INT 60 u - HP 95LX System Manager - FILE SERVICE "M_PUTFDT"
DI = 051Ch
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
WORD ???
Return: ???
STACK unchanged
----------60----DI0600-----------------------
INT 60 u - HP 95LX System Manager - PROCESS INITIALIZING
DI = 0600h
STACK: 2 WORDs unused dummies (for calls from high level languages)
Return: ???
STACK unchanged
SeeAlso: INT 15/AX=4DD4h,INT 60/DI=0601h,INT 61"HP 95LX"
----------60----DI0601-----------------------
INT 60 u - HP 95LX System Manager - PROCESS TERMINATION
DI = 0601h
STACK: 2 WORDs unused dummies (for calls from high level languages)
Return: never
STACK unchanged
SeeAlso: INT 21/AH=4Ch,INT 60/DI=0600h
----------60----DI0602-----------------------
INT 60 u - HP 95LX System Manager - "M_LOCK" - PREVENT TASK SWITCHES
DI = 0602h
STACK: 2 WORDs unused dummies (for calls from high level languages)
Return: ???
STACK unchanged
SeeAlso: INT 15/AX=101Bh,INT 60/DI=0603h
----------60----DI0603-----------------------
INT 60 u - HP 95LX System Manager - "M_UNLOCK" - ALLOW TASK SWITCHES
DI = 0603h
STACK: 2 WORDs unused dummies (for calls from high level languages)
Return: ???
STACK unchanged
SeeAlso: INT 15/AX=101Ch,INT 60/DI=0602h
----------60----DI0604-----------------------
INT 60 u - HP 95LX System Manager - "M_SPAWN"
DI = 0604h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
WORD ???
WORD ???
DWORD pointer to ???
Return: ???
STACK unchanged
----------60----DI0605-----------------------
INT 60 u - HP 95LX System Manager - "M_APPCOUNT"
DI = 0605h
STACK: 2 WORDs unused dummies (for calls from high level languages)
Return: ???
STACK unchanged
----------60----DI0606-----------------------
INT 60 u - HP 95LX System Manager - "M_REBOOT"
DI = 0606h
STACK: 2 WORDs unused dummies (for calls from high level languages)
Return: ???
STACK unchanged
----------60----DI0607-----------------------
INT 60 u - HP 95LX System Manager - "M_SPAWNARG"
DI = 0607h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
WORD ???
DWORD pointer to ???
WORD ???
Return: ???
STACK unchanged
----------60----DI0608-----------------------
INT 60 u - HP 95LX System Manager - "M_REG_APP_NAME"
DI = 0608h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
Return: ???
STACK unchanged
----------60----DI0609-----------------------
INT 60 u - HP 95LX System Manager - "M_APP_NAME"
DI = 0609h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
Return: DX:AX -> ???
STACK unchanged
SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
----------60----DI0700-----------------------
INT 60 u - HP 95LX System Manager - OPEN CLIPBOARD
DI = 0700h
STACK: 2 WORDs unused dummies (for calls from high level languages)
Return: ???
STACK unchanged
SeeAlso: INT 60/DI=0701h,INT 60/DI=0702h
Values for error code:
0000h successful
FFF8h transfer request out of bounds
FFF9h no such representation
FFFAh no representation open
FFFBh a representation is already open
FFFCh representation already exists
FFFDh heap allocation failure
FFFEh clipboard not open
FFFFh clipboard access denied
----------60----DI0701-----------------------
INT 60 u - HP 95LX System Manager - CLOSE CLIPBOARD
DI = 0701h
STACK: 2 WORDs unused dummies (for calls from high level languages)
Return: ???
STACK unchanged
SeeAlso: INT 60/DI=0700h,INT 60/DI=0702h
----------60----DI0702-----------------------
INT 60 u - HP 95LX System Manager - RESET CLIPBOARD
DI = 0702h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
Return: ???
STACK unchanged
SeeAlso: INT 60/DI=0700h
----------60----DI0704-----------------------
INT 60 u - HP 95LX System Manager - "M_NEW_REP" - START A NEW REPRESENTATION???
DI = 0704h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
Return: ???
STACK unchanged
SeeAlso: INT 60/DI=0705h,INT 60/DI=0706h,INT 60/DI=0707h
----------60----DI0705-----------------------
INT 60 u - HP 95LX System Manager - CLIPBOARD SERVICE "M_FINI_REP"
DI = 0705h
STACK: 2 WORDs unused dummies (for calls from high level languages)
Return: ???
STACK unchanged
SeeAlso: INT 60/DI=0704h
----------60----DI0706-----------------------
INT 60 u - HP 95LX System Manager - CLIPBOARD SERVICE "M_REP_NAME"
DI = 0706h
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD ???
DWORD pointer to ???
DWORD pointer to ???
Return: ???
STACK unchanged
SeeAlso: INT 60/DI=0704h,INT 60/DI=0707h
----------60----DI0707-----------------------
INT 60 u - HP 95LX System Manager - CLIPBOARD SERVICE "M_REP_INDEX"
DI = 0707h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
DWORD pointer to ???
DWORD pointer to ???
Return: ???
STACK unchanged
SeeAlso: INT 60/DI=0704h,INT 60/DI=0706h
----------60----DI0708-----------------------
INT 60 u - HP 95LX System Manager - WRITE TO CLIPBOARD
DI = 0708h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to data to be written???
WORD length of data???
Return: ???
STACK unchanged
SeeAlso: INT 60/DI=0709h
----------60----DI0709-----------------------
INT 60 u - HP 95LX System Manager - READ FROM CLIPBOARD
DI = 0709h
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD ???
WORD ???
DWORD pointer to buffer for data???
WORD length of buffer???
Return: ???
STACK unchanged
SeeAlso: INT 60/DI=0708h
----------60----DI0800-----------------------
INT 60 u - HP 95LX System Manager - BEEP
DI = 0800h
STACK: 2 WORDs unused dummies (for calls from high level languages)
Return: ???
STACK unchanged
SeeAlso: INT 60/DI=0801h,INT 60/DI=0802h,INT 60/DI=0803h
----------60----DI0801-----------------------
INT 60 u - HP 95LX System Manager - SOUND SERVICE "M_THUD"
DI = 0801h
STACK: 2 WORDs unused dummies (for calls from high level languages)
Return: ???
STACK unchanged
SeeAlso: INT 60/DI=0800h,INT 60/DI=0802h,INT 60/DI=0803h
----------60----DI0802-----------------------
INT 60 u - HP 95LX System Manager - MAKE A SOUND PATTERN
DI = 0802h
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD pattern number (00h-06h)
Return: ???
STACK unchanged
SeeAlso: INT 60/DI=0800h,INT 60/DI=0801h,INT 60/DI=0803h
----------60----DI0803-----------------------
INT 60 u - HP 95LX System Manager - TURN OFF SOUND
DI = 0803h
STACK: 2 WORDs unused dummies (for calls from high level languages)
Return: ???
STACK unchanged
SeeAlso: INT 60/DI=0800h,INT 60/DI=0801h,INT 60/DI=0802h
----------60----DI0900-----------------------
INT 60 - HP 95LX System Manager - ALLOCATE REGULAR MEMORY BLOCK
DI = 0900h
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD size of block in bytes
Return: AX -> memory block
STACK unchanged
Note: System Manager-compliant applications are always small-model (64K code,
64K data)
SeeAlso: INT 15/AX=4DD4h,INT 60/DI=0902h,INT 60/DI=0903h
----------60----DI0902-----------------------
INT 60 u - HP 95LX System Manager - FREE REGULAR MEMORY BLOCK
DI = 0902h
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD offset of memory block???
Return: ???
STACK unchanged
Note: System Manager-compliant applications are always small-model (64K code,
64K data)
SeeAlso: INT 60/DI=0900h,INT 60/DI=0904h
----------60----DI0903-----------------------
INT 60 u - HP 95LX System Manager - ALLOCATE LARGE MEMORY BLOCK
DI = 0903h
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD size of block in bytes???
Return: AX -> memory block???
STACK unchanged
SeeAlso: INT 60/DI=0900h,INT 60/DI=0904h
----------60----DI0904-----------------------
INT 60 u - HP 95LX System Manager - FREE LARGE MEMORY BLOCK
DI = 0904h
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD segment of memory block???
Return: AX -> ???
STACK unchanged
SeeAlso: INT 60/DI=0902h,INT 60/DI=0903h
----------60----DI0B00-----------------------
INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_DTINFO"
DI = 0B00h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
Return: ???
STACK unchanged
----------60----DI0B01-----------------------
INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_GETDTM"
DI = 0B01h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
Return: ???
STACK unchanged
----------60----DI0B02-----------------------
INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_SETDTM"
DI = 0B02h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
Return: ???
STACK unchanged
----------60----DI0B03-----------------------
INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_XALARM"
DI = 0B03h
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD ???
Return: ???
STACK unchanged
----------60----DI0B04-----------------------
INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_ALARM"
DI = 0B04h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to alarm record???
WORD ???
Return: ???
STACK unchanged
Format of alarm record:
Offset Size Description
00h BYTE hour
01h BYTE minute
02h BYTE second
03h BYTE unused padding
04h WORD rescheduling interval, in seconds
06h BYTE are seconds significant?
07h BYTE alarm sound
08h 40 BYTEs message displayed when alarm activates
30h BYTE task ID of owner
31h BYTE application's own use for sub-class
32h 4 BYTEs application's own use for private data
----------60----DI0B05-----------------------
INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_START_SW"
DI = 0B05h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
Return: ???
STACK unchanged
----------60----DI0B06-----------------------
INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_GET_SW"
DI = 0B06h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
DWORD pointer to ???
DWORD pointer to ???
Return: ???
STACK unchanged
----------60----DI0B07-----------------------
INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_STOP_SW"
DI = 0B07h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
Return: ???
STACK unchanged
----------60----DI0B08-----------------------
INT 60 u - HP 95LX System Manager - "M_TELLTIME" - DISPLAY TIMESTAMP
DI = 0B08h
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD timestamp format
bits 1-0:
00 date only
01 time only
10 date and time
11 day and date
bit 4: supply am/pm
bit 5: supply seconds
bit 6: show year
bit 7: four-digit year
WORD row (-3 is topmost, 0 is first non-reserved line)
WORD column
Return: ???
STACK unchanged
----------60----DI0B09-----------------------
INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_GET_SETTINGS"
DI = 0B09h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
DWORD pointer to ???
Return: ???
STACK unchanged
SeeAlso: INT 60/DI=0B0Ah,INT 60/DI=0B0Fh
Format of system settings:
Offset Size Description
00h WORD country code
02h WORD speaker volume (00h-03h or FFh for off)
04h WORD contrast level (00h-0Fh)
06h WORD week start (00h Sunday, 01h Monday)
08h WORD punctuation format
code decimal arg thousands
00h . , ,
01h , . .
02h . ; ;
03h , ; .
04h . , " "
05h , . " "
06h . ; " "
07h , ; " "
0Ah WORD two-character language code (only 5355h = "US" byte-swapped)
0Ch WORD current date format
00h dd-mmm-yy
01h dd-mmm
02h mmm-yy
03h mm/dd/yy
04h dd/mm/yy
05h dd.mm.yy
06h yy-mm-dd
07h mm/dd
08h dd/mm
09h dd.mm
0Ah mm-dd
0Eh WORD current time format
00h HH:MM:SS am/pm
01h HH:MM am/pm
02h HH:MM:SS
03h HH.MM.SS
04h HH,MM,SS
05h HHhMMmSSs
06h HH:MM
07h HH.MM
08h HH,MM
09h HHhMMm
10h WORD collating sequence
00h numbers first, 01h letters first, 02h ASCII
12h 80 BYTEs name of picture file
62h 30 BYTEs name
80h 30 BYTEs title
9Eh 28 BYTEs company name
BAh WORD number of languages
BCh 6 BYTEs available languages
C2h 66 BYTEs language menu
104h 2 BYTEs ASCIZ date separator
106h 2 BYTEs ASCIZ time separator
108h BYTE date order
109h BYTE use 24 hour time?
10Ah 16 BYTEs currency string
11Ah WORD currency string position (00h prefix, 01h suffix)
11Ch WORD keyboard (see below)
11Eh WORD printer baud rate
00h 300, 01h 1200, 02h 2400, 03h 4800, 04h 9600, 05h 19200
120h WORD printer driver code
00h Epson FX80, 01h HP Laserjet, 02h IBM ProPrinter
122h WORD printer interface (00h COM1, 01h COM2, 02h IR, 03h LPT1)
124h WORD system manager interrupt (60h by default)
126h WORD code page (01h CP850, 02h CP437)
128h WORD active exit key
12Ah WORD active menu key
12Ch WORD active CHAR key toggle
12Eh 6 BYTEs alarm
Values for keyboard:
0001h Belgium
0002h French Canadian
0004h Denmark
0008h Finland
0010h French
0020h Finland
0040h Italy
0080h Netherlands
0100h Norway
0200h Portugal
0400h Spain
0800h Sweden
1000h Swiss French
2000h Swiss German
4000h United Kingdom
8000h USA
----------60----DI0B0A-----------------------
INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_SET_SETTINGS"
DI = 0B0Ah
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
DWORD pointer to ???
Return: ???
STACK unchanged
SeeAlso: INT 60/DI=0B09h
----------60----DI0B0B-----------------------
INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_START_TIMER"
DI = 0B0Bh
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
Return: ???
STACK unchanged
SeeAlso: INT 60/DI=0B0Ch,INT 60/DI=0B0Dh
----------60----DI0B0C-----------------------
INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_STOP_TIMER"
DI = 0B0Ch
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
Return: ???
STACK unchanged
SeeAlso: INT 60/DI=0B0Bh,INT 60/DI=0B0Dh
----------60----DI0B0D-----------------------
INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_GET_TIMER"
DI = 0B0Dh
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
DWORD pointer to ???
DWORD pointer to ???
Return: ???
STACK unchanged
SeeAlso: INT 60/DI=0B0Bh,INT 60/DI=0B0Ch
----------60----DI0B0E-----------------------
INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_TELL_ANYTIME"
DI = 0B0Eh
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD ???
WORD ???
WORD ???
DWORD pointer to ???
DWORD pointer to ???
Return: DX:AX -> ???
STACK unchanged
----------60----DI0B0F-----------------------
INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVCE "M_GET_SETTINGS_ADDR"
DI = 0B0Fh
STACK: 2 WORDs unused dummies (for calls from high level languages)
Return: DX:AX -> system settings record (see INT 60/DI=0B09h)
STACK unchanged
SeeAlso: INT 60/DI=0B09h
----------60----DI0B10-----------------------
INT 60 u - HP 95LX System Manager - PARSE DATE SPECIFICATION
DI = 0B10h
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD ???
DWORD pointer to ???
DWORD pointer to ???
Return: ???
STACK unchanged
----------60----DI0B11-----------------------
INT 60 u - HP 95LX System Manager - PARSE TIME SPECIFICATION
DI = 0B11h
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD ???
DWORD pointer to ???
DWORD pointer to ???
Return: ???
STACK unchanged
----------60----DI0B12-----------------------
INT 60 u - HP 95LX System Manager - SET DATE PARSING RULE
DI = 0B12h
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD new parsing rule
01h day-month-year
02h month-day-year
03h year-month-day
04h "DMYO"
05h "MDYO"
OR with 08h to get any year
Return: ???
STACK unchanged
SeeAlso: INT 60/DI=0B13h
----------60----DI0B13-----------------------
INT 60 u - HP 95LX System Manager - SET TIME PARSING RULE
DI = 0B13h
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD new parsing rule
01h HH:MM:SS (am/pm)
02h HH:MM:SS (24hr)
03h HHMM:SS (24hr)
04h HH:MM:SS.hh (24hr)
05h HH:MM (am/pm)
06h HH:MM (24hr)
07h HHMM (24hr)
Return: ???
STACK unchanged
SeeAlso: INT 60/DI=0B12h
----------60----DI0B14-----------------------
INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_POST_TIME"
DI = 0B14h
STACK: 2 WORDs unused dummies (for calls from high level languages)
Return: ???
STACK unchanged
----------60----DI0B15-----------------------
INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_DAY_TRIGGER"
DI = 0B15h
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD ???
Return: ???
STACK unchanged
SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
----------60----DI0C00-----------------------
INT 60 u - HP 95LX System Manager - OPEN PRINTER
DI = 0C00h
STACK: 2 WORDs unused dummies (for calls from high level languages)
Return: ???
STACK unchanged
SeeAlso: INT 60/DI=0C01h,INT 60/DI=0C02h,INT 60/DI=0C03h
----------60----DI0C01-----------------------
INT 60 u - HP 95LX System Manager - CLOSE PRINTER
DI = 0C01h
STACK: 2 WORDs unused dummies (for calls from high level languages)
Return: ???
STACK unchanged
Note: relinquishes control of printer
SeeAlso: INT 60/DI=0C00h
----------60----DI0C02-----------------------
INT 60 u - HP 95LX System Manager - WRITE TO PRINTER
DI = 0C02h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to data to be written
WORD length of data
Return: ???
STACK unchanged
SeeAlso: INT 60/DI=0C00h
----------60----DI0C03-----------------------
INT 60 u - HP 95LX System Manager - INITIALIZE PRINTER
DI = 0C03h
STACK: 2 WORDs unused dummies (for calls from high level languages)
Return: ???
STACK unchanged
SeeAlso: INT 60/DI=0C00h
----------60----DI0C04-----------------------
INT 60 u - HP 95LX System Manager - "M_TRANS_PRINTER"
DI = 0C04h
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD ???
DWORD pointer to ???
Return: ???
STACK unchanged
----------60----DI0C05-----------------------
INT 60 u - HP 95LX System Manager - "M_FALL_PRINTER"
DI = 0C05h
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD ???
DWORD pointer to ???
Return: ???
STACK unchanged
SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
----------60----DI0E00-----------------------
INT 60 u - HP 95LX System Manager - COMMUNICATIONS SERVICE "M_COMM_INIT"
DI = 0E00h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
Return: ???
STACK unchanged
SeeAlso: INT 60/DI=0E01h,INT 60/DI=0E02h
Values for error code:
0000h successful
FFF1h "E_BUSY"
FFF2h timeout
FFF3h framing error
FFF4h parity error
FFF5h overrun error
FFF6h "E_EMPTY"
FFF7h "E_CONECT"
FFF8h not open
FFF9h out of memory
FFFAh buffer overflow
FFFBh "E_NOFIT"
FFFCh unsupported
FFFDh "E_IVOPR"
FFFEh "E_IVCHN"
FFFFh "E_REOPEN"
----------60----DI0E01-----------------------
INT 60 u - HP 95LX System Manager - OPEN COMMUNICATIONS CHANNEL
DI = 0E01h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to WORD buffer for comm channel handle
WORD communications line number (01h-04h)
Return: ???
STACK unchanged
SeeAlso: INT 60/DI=0E00h,INT 60/DI=0E02h
----------60----DI0E02-----------------------
INT 60 u - HP 95LX System Manager - CLOSE COMMUNICATIONS CHANNEL
DI = 0E02h
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD comm channel handle
Return: ???
STACK unchanged
SeeAlso: INT 60/DI=0E00h,INT 60/DI=0E01h
----------60----DI0E03-----------------------
INT 60 u - HP 95LX System Manager - "M_COMM_GETMDM"
DI = 0E03h
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD ???
Return: ???
STACK unchanged
----------60----DI0E04-----------------------
INT 60 u - HP 95LX System Manager - "M_COMM_ANSWER"
DI = 0E04h
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD ???
WORD ???
Return: ???
STACK unchanged
----------60----DI0E05-----------------------
INT 60 u - HP 95LX System Manager - "M_COMM_DIAL"
DI = 0E05h
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD ???
DWORD pointer to ???
Return: ???
STACK unchanged
----------60----DI0E06-----------------------
INT 60 u - HP 95LX System Manager - RESET COMMUNICATIONS CHANNEL
DI = 0E06h
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD comm channel handle
WORD reset options
bit 0: reset line
bit 1: flush transmit buffer
bit 2: flush receive buffer
bit 3: reset modem
bit 4: reset receiver's ^S state
bit 5: reset transmitter's ^S state
Return: ???
STACK unchanged
----------60----DI0E07-----------------------
INT 60 u - HP 95LX System Manager - "M_COMM_HANGUP"
DI = 0E07h
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD ???
Return: ???
STACK unchanged
----------60----DI0E08-----------------------
INT 60 u - HP 95LX System Manager - SEND DATA OVER COMM CHANNEL
DI = 0E08h
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD comm channel handle
DWORD pointer to data to be sent
WORD option flags
bit 0: send partial buffer
bit 1: turn on receiver after sending
DWORD pointer to WORD containing length of data to be sent
Return: length WORD updated to contain number of bytes actually sent???
STACK unchanged
SeeAlso: INT 60/DI=0E09h,INT 60/DI=0E0Bh
----------60----DI0E09-----------------------
INT 60 u - HP 95LX System Manager - QUERY COMM CHANNEL TRANSMIT QUEUE
DI = 0E09h
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD ???
DWORD pointer to ??? WORD
DWORD pointer to ??? WORD
Return: ???
STACK unchanged
SeeAlso: INT 60/DI=0E0Ah
----------60----DI0E0A-----------------------
INT 60 u - HP 95LX System Manager - QUERY COMM CHANNEL RECEIVE QUEUE
DI = 0E0Ah
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD comm channel handle
DWORD pointer to WORD to get receive buffer size
DWORD pointer to WORD to get free bytes in receive buffer
Return: ???
STACK unchanged
SeeAlso: INT 60/DI=0E09h,INT 60/DI=0E0Bh
----------60----DI0E0B-----------------------
INT 60 u - HP 95LX System Manager - RECEIVE DATA FROM COMM CHANNEL
DI = 0E0Bh
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD comm channel handle
DWORD pointer to data buffer
DWORD pointer to WORD (input) length of data buffer
(output) number of bytes received
Return: ???
STACK unchanged
SeeAlso: INT 60/DI=0E08h,INT 60/DI=0E0Ah
----------60----DI0E0C-----------------------
INT 60 u - HP 95LX System Manager - "M_COMM_HAZCMD"
DI = 0E0Ch
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD ???
DWORD pointer to ???
WORD ???
Return: ???
STACK unchanged
----------60----DI0E0D-----------------------
INT 60 u - HP 95LX System Manager - "M_COMM_COMAND"
DI = 0E0Dh
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD ???
DWORD pointer to ???
WORD ???
Return: ???
STACK unchanged
----------60----DI0E0E-----------------------
INT 60 u - HP 95LX System Manager - "M_COMM_BREAK"
DI = 0E0Eh
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD ???
WORD ???
Return: ???
STACK unchanged
----------60----DI0E0F-----------------------
INT 60 u - HP 95LX System Manager - "M_COMM_FRCXON"
DI = 0E0Fh
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD ???
Return: ???
STACK unchanged
----------60----DI0E10-----------------------
INT 60 u - HP 95LX System Manager - "M_COMM_FRCXOF"
DI = 0E10h
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD ???
Return: ???
STACK unchanged
----------60----DI0E11-----------------------
INT 60 u - HP 95LX System Manager - "M_COMM_SETDTR"
DI = 0E11h
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD ???
WORD ???
Return: ???
STACK unchanged
----------60----DI0E12-----------------------
INT 60 u - HP 95LX System Manager - "M_COMM_XMITNG"
DI = 0E12h
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD ???
Return: ???
STACK unchanged
----------60----DI0E13-----------------------
INT 60 u - HP 95LX System Manager - "M_COMM_STATUS"
DI = 0E13h
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD ???
Return: ???
STACK unchanged
----------60----DI0E14-----------------------
INT 60 u - HP 95LX System Manager - SET COMMUNICATIONS SETTINGS
DI = 0E14h
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD comm channel handle
DWORD pointer to comm settings (see below)
Return: ???
STACK unchanged
SeeAlso: INT 60/DI=0E15h
Format of comm settings:
Offset Size Description
00h BYTE dial type ('T' tone, 'P' pulse)
01h WORD baud rate divisor (115200/baud_rate)
03h BYTE parity (00h none, 08h odd, 18h even, 28h mark, 38h space)
04h BYTE stop bits (00h one, 04h two)
05h BYTE data bits - 5
06h BYTE software handshake
01h none, 02h XOFF/XON, 04h XOFF/any, 08h ENQ/ACK
07h BYTE infrared (01h off, 02h on)
08h BYTE duplex (01h half, 02h full)
09h BYTE echo (01h echo, 02h no echo)
----------60----DI0E15-----------------------
INT 60 u - HP 95LX System Manager - GET COMMUNICATIONS SETTINGS
DI = 0E15h
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD ???
DWORD pointer to buffer for settings (see INT 60/DI=0E14h)
Return: ???
STACK unchanged
SeeAlso: INT 60/DI=0E14h
----------60----DI0E16-----------------------
INT 60 u - HP 95LX System Manager - "M_COMM_CNFGUR"
DI = 0E16h
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD ???
WORD ???
WORD ???
WORD ???
WORD ???
Return: ???
STACK unchanged
----------60----DI0E17-----------------------
INT 60 u - HP 95LX System Manager - "M_COMM_QRYERR"
DI = 0E17h
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD ???
Return: ???
STACK unchanged
SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
----------60----DI0F00-----------------------
INT 60 u - HP 95LX System Manager - "M_ERRMSG"
DI = 0F00h
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD ???
DWORD pointer to ???
WORD ???
DWORD pointer to ???
Return: ???
STACK unchanged
----------60----DI0F01-----------------------
INT 60 u - HP 95LX System Manager - DRAW STANDARD TITLE BOX
DI = 0F01h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ASCIZ title string
Return: ???
STACK unchanged
----------60----DI0F02-----------------------
INT 60 u - HP 95LX System Manager - "SHOWNAME"
DI = 0F02h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
Return: ???
STACK unchanged
----------60----DI0F03-----------------------
INT 60 u - HP 95LX System Manager - DISPLAY TWO-LINE MESSAGE BOX
DI = 0F03h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to first line of message
WORD length of first line
DWORD pointer to second line of message
WORD length of second line
Return: ???
STACK unchanged
SeeAlso: INT 60/DI=0300h,INT 60/DI=0F04h,INT 60/DI=0F09h
----------60----DI0F04-----------------------
INT 60 u - HP 95LX System Manager - REMOVE MESSAGE BOX
DI = 0F04h
STACK: 2 WORDs unused dummies (for calls from high level languages)
Return: ???
STACK unchanged
SeeAlso: INT 60/DI=0F03h,INT 60/DI=0F09h
----------60----DI0F05-----------------------
INT 60 u - HP 95LX System Manager - "M_COM_TIMER_ADDR"
DI = 0F05h
STACK: 2 WORDs unused dummies (for calls from high level languages)
Return: DX:AX -> ???
STACK unchanged
----------60----DI0F06-----------------------
INT 60 u - HP 95LX System Manager - "M_COM_TIMER_COUNT_ADDR"
DI = 0F06h
STACK: 2 WORDs unused dummies (for calls from high level languages)
Return: DX:AX -> ???
STACK unchanged
----------60----DI0F07-----------------------
INT 60 u - HP 95LX System Manager - "M_SYS_RSRC_ADDR"
DI = 0F07h
STACK: 2 WORDs unused dummies (for calls from high level languages)
Return: DX:AX -> ???
STACK unchanged
----------60----DI0F08-----------------------
INT 60 u - HP 95LX System Manager - "M_BIOS_OUTSTR"
DI = 0F08h
STACK: 2 WORDs unused dummies (for calls from high level languages)
???
Return: ???
STACK unchanged
----------60----DI0F09-----------------------
INT 60 u - HP 95LX System Manager - DISPLAY THREE-LINE MESSAGE BOX
DI = 0F09h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to first line of message
WORD length of first line
DWORD pointer to second line of message
WORD length of second line
DWORD pointer to third line of message
WORD length of third line
Return: ???
STACK unchanged
SeeAlso: INT 60/DI=0F03h,INT 60/DI=0F04h
----------60----DI0F0A-----------------------
INT 60 u - HP 95LX System Manager - DISABLE MACROS
DI = 0F0Ah
STACK: 2 WORDs unused dummies (for calls from high level languages)
Return: ???
STACK unchanged
SeeAlso: INT 60/DI=0F0Bh
----------60----DI0F0B-----------------------
INT 60 u - HP 95LX System Manager - ENABLE MACROS
DI = 0F0Bh
STACK: 2 WORDs unused dummies (for calls from high level languages)
Return: ???
STACK unchanged
SeeAlso: INT 60/DI=0F0Ah
----------60----DI0F0C-----------------------
INT 60 u - HP 95LX System Manager - "M_DATE_TIME_SEPS"
DI = 0F0Ch
STACK: 2 WORDs unused dummies (for calls from high level languages)
???
Return: ???
STACK unchanged
----------60----DI0F0D-----------------------
INT 60 u - HP 95LX System Manager - "M_FORM_FT"
DI = 0F0Dh
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
Return: DX:AX -> ???
STACK unchanged
----------60----DI0F0E-----------------------
INT 60 u - HP 95LX System Manager - "M_RAM_IV_INFO"
DI = 0F0Eh
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
Return: DX:AX -> ???
STACK unchanged
SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
----------60----DI1005-----------------------
INT 60 u - HP 95LX System Manager - "M_DIRTY_SYNC" - FORCE SCREEN UPDATE
DI = 1005h
STACK: 2 WORDs unused dummies (for calls from high level languages)
Return: ???
STACK unchanged
SeeAlso: INT 10/AH=FFh,INT 60/DI=0300h,INT 60/DI=0301h
----------60----DI1200-----------------------
INT 60 u - HP 95LX System Manager - RESOURCE SERVICE "MAP_RESOURCE_FILE"
DI = 1200h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
Return: ???
STACK unchanged
----------60----DI1201-----------------------
INT 60 u - HP 95LX System Manager - "GET_RESOURCE_PTR"
DI = 1201h
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD ???
Return: DX:AX -> ???
STACK unchanged
SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
----------60----DI1202-----------------------
INT 60 u - HP 95LX System Manager - "GET_RSRC_TAB_PTR"
DI = 1202h
STACK: 2 WORDs unused dummies (for calls from high level languages)
Return: DX:AX -> ???
STACK unchanged
----------60----DI1203-----------------------
INT 60 u - HP 95LX System Manager - "INIT_SYSGMR_RSRCS"
DI = 1203h
STACK: 2 WORDs unused dummies (for calls from high level languages)
Return: ???
STACK unchanged
----------60----DI1300-----------------------
INT 60 u - HP 95LX System Manager - INITIALIZE HELP SYSTEM
DI = 1300h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
DWORD pointer to ???
WORD ???
Return: ???
STACK unchanged
----------60----DI1301-----------------------
INT 60 u - HP 95LX System Manager - DISPLAY HELP
DI = 1301h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
Return: ???
STACK unchanged
----------60----DI1302-----------------------
INT 60 u - HP 95LX System Manager - "M_HELP_KEY"
DI = 1302h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
WORD ???
Return: ???
STACK unchanged
----------60----DI1303-----------------------
INT 60 u - HP 95LX System Manager - "M_HELP_TERM"
DI = 1303h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
Return: ???
STACK unchanged
SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
----------60----DI1400-----------------------
INT 60 u - HP 95LX System Manager - "M_ColInit"
DI = 1400h
STACK: 2 WORDs unused dummies (for calls from high level languages)
Return: AX = ???
STACK unchanged
----------60----DI1401-----------------------
INT 60 u - HP 95LX System Manager - "M_ColCpStr"
DI = 1401h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
WORD ???
DWORD pointer to ???
WORD ???
Return: ???
STACK unchanged
----------60----DI1402-----------------------
INT 60 u - HP 95LX System Manager - "M_ColLicsStr"
DI = 1402h
STACK: 2 WORDs unused dummies (for calls from high level languages)
???
Return: ???
STACK unchanged
----------60----DI1403-----------------------
INT 60 u - HP 95LX System Manager - "M_ColLicsChar"
DI = 1403h
STACK: 2 WORDs unused dummies (for calls from high level languages)
???
Return: ???
STACK unchanged
----------60----DI1404-----------------------
INT 60 u - HP 95LX System Manager - "M_ColToLower"
DI = 1404h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
WORD ???
Return: ???
STACK unchanged
----------60----DI1405-----------------------
INT 60 u - HP 95LX System Manager - "M_ColCpSearch"
DI = 1405h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
WORD ???
DWORD pointer to ???
WORD ???
WORD ???
Return: ???
STACK unchanged
----------60----DI1406-----------------------
INT 60 u - HP 95LX System Manager - "M_ColToUpper"
DI = 1406h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
WORD ???
Return: ???
STACK unchanged
SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
----------60----DI1500-----------------------
INT 60 u - HP 95LX System Manager - "GrDispInit"
DI = 1500h
STACK: 2 WORDs unused dummies (for calls from high level languages)
???
Return: ???
STACK unchanged
----------60----DI1501-----------------------
INT 60 u - HP 95LX System Manager - "GrDispClear"
DI = 1501h
STACK: 2 WORDs unused dummies (for calls from high level languages)
???
Return: ???
STACK unchanged
----------60----DI1502-----------------------
INT 60 u - HP 95LX System Manager - "GrDispDot"
DI = 1502h
STACK: 2 WORDs unused dummies (for calls from high level languages)
???
Return: ???
STACK unchanged
----------60----DI1503-----------------------
INT 60 u - HP 95LX System Manager - "GrDispDraw"
DI = 1503h
STACK: 2 WORDs unused dummies (for calls from high level languages)
???
Return: ???
STACK unchanged
----------60----DI1504-----------------------
INT 60 u - HP 95LX System Manager - "GrDispFill"
DI = 1504h
STACK: 2 WORDs unused dummies (for calls from high level languages)
???
Return: ???
STACK unchanged
----------60----DI1505-----------------------
INT 60 u - HP 95LX System Manager - "GrDispRead"
DI = 1505h
STACK: 2 WORDs unused dummies (for calls from high level languages)
???
Return: ???
STACK unchanged
----------60----DI1506-----------------------
INT 60 u - HP 95LX System Manager - "GrDispString"
DI = 1506h
STACK: 2 WORDs unused dummies (for calls from high level languages)
???
Return: ???
STACK unchanged
----------60----DI1507-----------------------
INT 60 u - HP 95LX System Manager - "GrDispPan"
DI = 1507h
STACK: 2 WORDs unused dummies (for calls from high level languages)
???
Return: ???
STACK unchanged
----------60----DI1508-----------------------
INT 60 u - HP 95LX System Manager - "GrDispZoom"
DI = 1508h
STACK: 2 WORDs unused dummies (for calls from high level languages)
???
Return: ???
STACK unchanged
----------60----DI1509-----------------------
INT 60 u - HP 95LX System Manager - "GrDispSave"
DI = 1509h
STACK: 2 WORDs unused dummies (for calls from high level languages)
???
Return: ???
STACK unchanged
----------60----DI150A-----------------------
INT 60 u - HP 95LX System Manager - "GrDispRestore"
DI = 150Ah
STACK: 2 WORDs unused dummies (for calls from high level languages)
???
Return: ???
STACK unchanged
----------60----DI150B-----------------------
INT 60 u - HP 95LX System Manager - "GrDispCorner"
DI = 150Bh
STACK: 2 WORDs unused dummies (for calls from high level languages)
???
Return: ???
STACK unchanged
SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
----------60----DI1604-----------------------
INT 60 u - HP 95LX System Manager - "CP_TO_LICS"
DI = 1604h
STACK: 2 WORDs unused dummies (for calls from high level languages)
???
Return: ???
STACK unchanged
SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
----------6000-------------------------------
INT 60 - SYS_PROF.EXE - PROFILER STATUS
AH = 00h
Return: AX = 0000h profiling is off
otherwise profiling is on
Note: SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia #47
SeeAlso: AH=01h"SYS_PROF",02h"SYS_PROF"
----------6000-------------------------------
INT 60 - MDEBUG - GET STATUS
AH = 00h
DS:SI -> password or a null byte
Return: AX = return code
FFFEh password is invalid
FFFDh display mode is invalid
else successful
ES = value of the monitor register SE
DI = value of the monitor register OF
CH = monitor color
CL = interpreter color
BH = monitor start line
BL = interpreter start line
AH = makecode of the hotkey
AL = ASCII code of the hotkey
DL = status of special keys (only SHIFT, ALT, CTRL) for the
hotkey (coded as for the keyboard flag at 0040h:0017h)
DH = basic process number for the communication with drivers
process number for the display driver, DH+1 = process
number for the command driver(s)
DS:SI -> MDEBUG identification table
Notes: MDEBUG is a shareware memory-resident debugging tool by Bernd Schemmer,
including a memory monitor, an interpreter, and a disassembler
MDEBUG uses INT 60 by default, but may be directed to any of INT 60
through INT 67; the interrupt handler is preceded by the signature
"USERINT" and is not chained
if DS:SI points at a null byte, MDEBUG will prompt for a password if
passwords are active; enough stack space must be provided for an
INT 10h call (which MDEBUG uses while prompting for the password)
SeeAlso: AH=02h"MDEBUG"
Format of MDEBUG identification table:
Offset Size Description
-2 WORD entry offset
00h WORD CS of MDEBUG
02h DWORD old INT 08h vector
06h DWORD old INT 09h vector
0Ah DWORD address INT 16h routine used by MDEBUG
0Eh BYTE length of version string
0Fh N BYTEs version string
----------6001-------------------------------
INT 60 - MDEBUG - GET ADDRESS OF THE HELP REGISTERS
AH = 01h
DS:SI -> password or a null byte
Return: AX = return code
FFFEh password is invalid
FFFDh display mode is invalid
else successful
ES:DI point to the help registers of MDEBUG
ES:DI-02h -> R0 (WORD)
ES:DI -> R1 (WORD)
ES:DI+02h -> R2 (WORD)
ES:DI+04h -> R3 (WORD)
...
ES:DI+0Eh -> R8 (WORD)
----------6001-------------------------------
INT 60 - SYS_PROF.EXE - TURN PROFILING OFF
AH = 01h
Note: SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia #47
SeeAlso: AH=00h"SYS_PROF",02h"SYS_PROF"
----------6001FF-----------------------------
INT 60 - FTP Packet Driver - BASIC FUNC - GET DRIVER INFO
AX = 01FFh
BX = handle returned by function 02h
Return: CF set on error
DH = error code (see below)
CF clear if successful
BX = version
CH = network interface class (see below)
DX = interface type (see below)
CL = number
DS:SI -> name
AL = driver functions supported
01h basic
02h basic and extended
05h basic and high-performance
06h basic, high-performance, and extended
FFh not installed
Note: the handle in BX is optional for drivers written to v1.07 or later of
the packet driver specification
Values for error code:
01h "BAD_HANDLE" invalid handle number
02h "NO_CLASS" no interfaces of the specified class found
03h "NO_TYPE" no interfaces of the specified type found
04h "NO_NUMBER" no interfaces of the specified number found
05h "BAD_TYPE" bad packet type
06h "NO_MULTICAST" interface does not support multicast messages
07h "CANT_TERMINATE" this packet driver cannot terminate
08h "BAD_MODE" invalid receiver mode
09h "NO_SPACE" insufficient space
0Ah "TYPE_INUSE" type accessed but never released
0Bh "BAD_COMMAND" bad command
0Ch "CANT_SEND" packet could not be sent
0Dh "CANT_SET" hardware address could not be changed
0Eh "BAD_ADDRESS" hardware address has a bad length or format
0Fh "CANT_RESET" could not reset interface
Values for Network Interface classes/types:
Class 01h Ethernet/IEEE 802.3
01h 3COM 3C500/3C501
02h 3COM 3C505
03h MICOM-Interlan NI5010
04h BICC Data Networks 4110
05h BICC Data Networks 4117
06h MICOM-Interlan NP600
08h Ungermann-Bass PC-NIC
09h Univation NC-516
0Ah TRW PC-2000
0Bh MICOM-Interlan NI5210
0Ch 3COM 3C503
0Dh 3COM 3C523
0Eh Western Digital WD8003
0Fh Spider Systems S4
10h Torus Frame Level
11h 10Net Communications
12h Gateway PC-bus
13h Gateway AT-bus
14h Gateway MCA-bus
15h IMC PCnic
16h IMC PCnic II
17h IMC PCnic 8-bit
18h Tigan Communications
19h Micromatic Research
1Ah Clarkson "Multiplexor"
1Bh D-Link 8-bit
1Ch D-Link 16-bit
1Dh D-Link PS/2
1Eh Research Machines 8
1Fh Research Machines 16
20h Research Machines MCA
21h Radix Microsystems EXM1 16-bit
22h Interlan Ni9210
23h Interlan Ni6510
24h Vestra LANMASTER 16-bit
25h Vestra LANMASTER 8-bit
26h Allied Telesis PC/XT/AT
27h Allied Telesis NEC PC-98
28h Allied Telesis Fujitsu FMR
29h Ungermann-Bass NIC/PS2
2Ah Tiara LANCard/E AT
2Bh Tiara LANCard/E MC
2Ch Tiara LANCard/E TP
2Dh Spider Communications SpiderComm 8
2Eh Spider Communications SpiderComm 16
2Fh AT&T Starlan NAU
30h AT&T Starlan-10 NAU
31h AT&T Ethernet NAU
32h Intel smart card
33h Xircom Packet Adapter
34h Aquila Ethernet
35h Novell NE1000
36h Novell NE2000
37h SMC PC-510
38h AT&T Fiber NAU
39h NDIS to Packet Driver adapter
3Ah Racal-InterLan ES3210
3Bh General Systems ISDN simulated Ethernet
3Ch Hewlett-Packard
3Dh IMC EtherNic-8
3Eh IMC EtherNic-16
3Fh IMC EtherNic-MCA
40h NetWorth EtherNext
41h Dataco Scanet
42h DEC DEPCA
43h C-Net
44h Gandalf LANLine
45h Apricot built-in
46h David Systems Ether-T
47h ODI to Packet Driver adapter
48h AMD Am21110-16
49h Intel ICD Network controller family
4Ah Intel ICD PCL2
4Bh Intel ICD PCL2A
4Ch AT&T LANPacer
4Dh AT&T LANPacer+
4Eh AT&T EVB
4Fh AT&T StarStation
50h SLIP simulated ethernet
51h Racal-Interlan NIA310
52h Racal-Interlan NISE
53h Racal-Interlan NISE30
54h Racal-Interlan NI6610
55h Ethernet over IP/UDP
Class 02h ProNET-10
01h Proteon p1300
02h Proteon p1800
Class 03h IEEE 802.5/ProNet-4
01h IBM Token-Ring Adapter
02h Proteon p1340
03h Proteon p1344
04h Gateway PC-bus
05h Gateway AT-bus
06h Gateway MCA-bus
39h NDIS to Packet Driver adapter
47h ODI to Packet Driver adapter
Class 04h Omninet
Class 05h Appletalk
01h ATALK.SYS adapter
Class 06h Serial Line
01h Clarkson 8250-SLIP
02h Clarkson "Multiplexor"
Class 07h StarLAN (subsumed by Ethernet class)
Class 08h ARCnet
01h Datapoint RIM
Class 09h AX.25
01h Ottawa PI card
Class 0Ah KISS
Class 0Bh IEEE 802.3 with 802.2 headers
types same as for class 01h
Class 0Ch FDDI with 802.2 headers
01h Western Digital
02h Frontier Technology
Class 0Dh Internet X.25
01h Western Digital
02h Frontier Technology
Class 0Eh N.T. LANSTAR (encapsulating DIX Ethernet)
01h NT LANSTAR/8
02h NT LANSTAR/MC
Class 0Fh SLFP (MIT serial specification)
01h MERIT
Class 10h PPP (Point-to-Point Protocol)
Note: class and type numbers are cleared through FTP Software
----------6002-------------------------------
INT 60 - MDEBUG - SET STATUS
AH = 02h
DS:SI -> password or a null byte
ES = new value for the register SE
DI = new value for the register OF
CH = new monitor color if nonzero
CL = new interpreter color if nonzero
BH = new monitor start line if nonzero
BL = new interpreter start line if nonzero
AL = new ASCII code for the hotkey ('A'..'Z', 'a'..'z') if nonzero
DL = new status of the special keys (SHIFT, ALT, CTRL) for the hotkey
if nonzero
DH = if nonzero, new basic process number for communication with the
drivers (DH = multiplex number for the display driver,
DH+1 = multiplex number for the command driver or drivers)
Return: AX = return code
FFFFh call not allowed
FFFEh password is invalid
FFFDh display mode is invalid
0000h successful, status changed
else AL = error code
bit 0 invalid monitor start line
1 invalid interpreter start line
2 invalid hotkey
3 invalid process number
4-7 reserved
Note: the values of the registers SE and OF are always changed, the other
values are only changed if they are valid
SeeAlso: AH=00h"MDEBUG"
----------6002-------------------------------
INT 60 - FTP Packet Driver - BASIC FUNC - ACCESS TYPE
AH = 02h
AL = interface class
BX = interface type
DL = interface number
DS:SI -> type
CX = length of type (0000h for all packets)
ES:DI -> receiver
Return: CF set on error
DH = error code (see AX=01FFh)
CF clear if successful
AX = handle
SeeAlso: AH=03h"FTP"
Receiver is called with:
AX = subfunction
00h get packet buffer
DX = lookahead length (v1.10+)
DS:SI -> lookahead buffer if DX nonzero (v1.10+)
DI = error flags (class dependent) (v1.10+)
Return: ES:DI -> packet buffer
0000h:0000h means throw away packet
CX = size of buffer (v1.10+), may be smaller than
incoming data
01h copy completed
DS:SI -> buffer
CX = bytes actually copied (v1.10+)
BX = handle
CX = buffer length
when a packet is received
----------6002-------------------------------
INT 60 - SYS_PROF.EXE - TURN PROFILING ON
AH = 02h
Note: SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia #47
SeeAlso: AH=00h"SYS_PROF",01h"SYS_PROF"
----------6003-------------------------------
INT 60 - MDEBUG - POP UP
AH = 03h
DS:SI -> password or a null byte
ES -> new value for the register SE
DI -> new value for the register OF
Return: AX = return code
FFFFh call not allowed
FFFEh password is invalid
FFFDh display mode is invalid
else successful
SeeAlso: AH=04h"MDEBUG"
----------6003-------------------------------
INT 60 - FTP Packet Driver - BASIC FUNC - RELEASE TYPE
AH = 03h
BX = handle
Return: CF set on error
DH = error code (see AX=01FFh)
CF clear if successful
SeeAlso: AH=02h"FTP"
----------6003-------------------------------
INT 60 - SYS_PROF.EXE - GET ADDRESS OF PROFILING TABLE
AH = 03h
Return: ES:BX -> profiling table
Note: SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia #47
SeeAlso: AH=04h"SYS_PROF"
----------6004-------------------------------
INT 60 - FTP Packet Driver - BASIC FUNC - SEND PACKET
AH = 04h
DS:SI -> buffer
CX = length
Return: CF set on error
DH = error code (see AX=01FFh)
CF clear if successful
Note: the buffer may be modified immediately upon return from this call
SeeAlso: AH=0Bh
----------6004-------------------------------
INT 60 - MDEBUG - POP UP
AH = 04h
DS:SI -> password or a null byte
Return: AX = return code
FFFFh call not allowed
FFFEh password is invalid
FFFDh display mode is invalid
else successful
SeeAlso: AH=03h"MDEBUG",AH=07h"MDEBUG"
----------6004-------------------------------
INT 60 - SYS_PROF.EXE - CLEAR PROFILING TABLE
AH = 04h
Note: SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia #47
SeeAlso: AH=03h"SYS_PROF"
----------6005-------------------------------
INT 60 - FTP Packet Driver - BASIC FUNC - TERMINATE DRIVER FOR HANDLE
AH = 05h
BX = handle (optional for v1.10+)
Return: CF set on error
DH = error code (see AX=01FFh)
CF clear if successful
----------6005-------------------------------
INT 60 - MDEBUG - GET AND SET MDEBUG FLAGS
AH = 05h
DS:SI -> password or a null byte
BL = new value for the semaphor of MDEBUG
00h enable popup of MDEBUG
else disable popup of MDEBUG
Return: AX = return code
FFFEh password is invalid
FFFDh display mode is invalid
else successful
BL = old value of the semapor of MDEBUG
BH = old value of the INT 08h semaphor
(this semaphor is always reset after this function)
----------6006-------------------------------
INT 60 - FTP Packet Driver - BASIC FUNC - GET ADDRESS
AH = 06h
BX = handle (optional for v1.10+)
ES:DI -> buffer
CX = length
Return: CF set on error
DH = error code (see AX=01FFh)
CF clear if successful
CX = length
Note: copies the local net address associated with the handle into the buffer
----------6006-------------------------------
INT 60 - MDEBUG - GET PASSWORD STATUS
AH = 06h
Return: AL = status
00h password inactive
01h password active
----------6007-------------------------------
INT 60 - FTP Packet Driver - BASIC FUNC - RESET INTERFACE
AH = 07h
BX = handle (optional for v1.10+)
Return: CF set on error
DH = error code (see AX=01FFh)
CF clear if successful
----------6007-------------------------------
INT 60 - MDEBUG v1.70+ - GET ACTIVE PART OF MDEBUG
AH = 07h
Return: AL = active part for the next popup session of MDEBUG:
bit 0: the next popup session will start in the interpreter rather
than in the monitor
bit 1: the next popup session will sart in the online-help
SeeAlso: AH=03h"MDEBUG",AH=04h"MDEBUG"
----------6008-------------------------------
INT 60 - MDEBUG - UNUSED
AH = 08h-FFh
Return: AX = FFFCh
----------600A-------------------------------
INT 60 - FTP Packet Driver 1.09+ - HIGH-PERF FUNC - GET PARAMETERS
AH = 0Ah
Return: CF set on error
DH = error code (0Bh) (see AX=01FFh)
CF clear if successful
ES:DI -> parameter table (see below)
Format of parameter table:
Offset Size Description
00h BYTE major revision of packet driver spec driver conforms to
01h BYTE minor revision of packet driver spec
02h BYTE length of this structure in bytes
03h BYTE length of a MAC-layer address
04h WORD maximum transfer unit, including MAC headers
06h WORD buffer size for multicast addr
08h WORD number of receive buffers (one less than back-to-back MTU rcvs)
0Ah WORD number of transmit buffers
0Ch WORD interrupt number to hook for post-EOI processing, 00h=none
----------600B-------------------------------
INT 60 - FTP Packet Driver 1.09 - HIGH-PERF FUNC - ASYNCHRONOUS SEND PACKET
AH = 0Bh
DS:SI -> buffer
CX = length of buffer
ES:DI -> FAR function to call when buffer becomes available
Return: CF set on error
DH = error code (0Bh,0Ch) (see AX=01FFh)
CF clear if successful
Notes: unlike function 04h, the buffer is not available for modification as
soon as the call returns; the buffer may be queued by the driver and
not processed until later
this function has been dropped from v1.10+ of the specification and
replaced by function 0Ch
SeeAlso: AH=04h"Packet Driver",AH=0Ch"Packet Driver"
Completion function called with:
AX = result
00h copy OK
nonzero error
ES:DI -> buffer passed to INT 60/AH=0Bh call
----------600C-------------------------------
INT 60 - FTP Packet Driver 1.10+ - HIGH-PERF FUNC - ASYNCHRONOUS SEND PACKET
AH = 0Ch
ES:DI -> pointer to IOCB
Return: CF set on error
DH = error code (see AX=01FFh)
CF clear if successful
SeeAlso: AH=04h"Packet Driver",AH=0Bh"Packet Driver"
Format of IOCB:
Offset Size Description
00h DWORD pointer to buffer
04h WORD length of buffer
06h BYTE flags
bit 0: packet driver is finished with IOCB
bit 1: application requests upcall when driver completes
07h DWORD function address for upcall
0Bh 4 BYTEs future gather write
0Fh BYTE ???
10h 8 BYTEs private driver workspace
Completion function called with:
ES:DI -> IOCB passed to INT 60/AH=0Ch
----------600C-------------------------------
INT 60 - Banyan VINES, 3com - GET STATION ADDRESS
AH = 0Ch
Return: AL = status
00h successful
ES:SI -> 6-byte station address
02h semaphore service is unavailable
----------600D-------------------------------
INT 60 - FTP Packet Driver 1.10+ - HIGH-PERF FUNC - DROP PACKET FROM QUEUE
AH = 0Dh
ES:DI -> IOCB
Return: CF set on error
DH = error code (see AX=01FFh)
CF clear if successful
SeeAlso: AH=0Ch"Packet Driver"
----------6011-------------------------------
INT 60 - 3com, 10NET, Banyan VINES - LOCK AND WAIT
AH = 11h
AL = drive number or 0
DX = number of seconds to wait
ES:SI = Ethernet address or 0
DS:BX -> 31-byte ASCIZ semaphore name
Return: AL = status
00h successful
01h timeout
02h server not responding
03h invalid semaphore name
04h semaphore list is full
05h invalid drive ID
06h invalid Ethernet address
07h not logged in
08h write to network failed
09h semaphore already logged for this CPU
SeeAlso: AH=12h,AH=13h
----------6012-------------------------------
INT 60 - 3com, 10NET, Banyan VINES - LOCK
AH = 12h
AL = drive number or 00h
ES:SI = Ethernet address or 0000h:0000h
DS:BX -> 31-byte ASCIZ semaphore name
Return: AL = status (see also AH=11h)
01h semaphore currently locked by another PC
Note: unlike function 11h, this function returns immediately
SeeAlso: AH=11h,AH=13h
----------6013-------------------------------
INT 60 - 3com, 10NET, Banyan VINES - UNLOCK
AH = 13h
AL = drive number or 00h
ES:SI = Ethernet address or 0000h:0000h
DS:BX -> 31-byte ASCIZ semaphore name
Return: AL = status (see also AH=11h)
1 semaphore not locked
SeeAlso: AH=11h,AH=12h
----------6014-------------------------------
INT 60 - FTP Packet Driver - EXTENDED FUNC - SET RECEIVE MODE
AH = 14h
BX = handle (optional for v1.10+)
CX = mode
01h turn off receiver
02h receive only packets sent to this interface
03h mode 2 plus broadcast packets
04h mode 3 plus limited multicast packets
05h mode 3 plus all multicast packets
06h all packets
07h raw mode for serial line only (v1.10+)
Return: CF set on error
DH = error code (01h,08h) (see AX=01FFh)
CF clear if successful
SeeAlso: AH=15h
----------6015-------------------------------
INT 60 - FTP Packet Driver - EXTENDED FUNC - GET RECEIVE MODE
AH = 15h
BX = handle (optional for v1.10+)
Return: CF set on error
DH = error code (01h) (see AX=01FFh)
CF clear if successful
AX = mode
SeeAlso: AH=14h
----------6016-------------------------------
INT 60 - FTP Packet Driver - EXTENDED FUNC - SET MULTICAST LIST
AH = 16h
ES:DI -> multicast list
CX = length of list in bytes
Return: CF set on error
DH = error code (06h,09h,0Eh) (see AX=01FFh)
CF clear if successful
SeeAlso: AH=17h
----------6017-------------------------------
INT 60 - FTP Packet Driver - EXTENDED FUNC - GET MULTICAST LIST
AH = 17h
Return: CF set on error
DH = error code (06h,09h) (see AX=01FFh)
CF clear if successful
ES:DI -> multicast addresses (do not modify)
CX = bytes of multicast addresses currently in use
SeeAlso: AH=16h
----------6018-------------------------------
INT 60 - FTP Packet Driver - EXTENDED FUNC - GET STATISTICS
AH = 18h
BX = handle (optional for v1.10+)
Return: CF set on error
DH = error code (01h) (see AX=01FFh)
CF clear if successful
DS:SI -> statistics (see below)
Format of statistics:
Offset Size Description
00h DWORD packets in
04h DWORD packets out
08h DWORD bytes in
0Ch DWORD bytes out
10h DWORD errors in
14h DWORD errors out
18h DWORD packets dropped
----------6019-------------------------------
INT 60 - FTP Packet Driver - EXTENDED FUNC - SET NETWORK ADDRESS
AH = 19h
ES:DI -> address
CX = length of address
Return: CF set on error
DH = error code (0Dh,0Eh) (see AX=01FFh)
CF clear if successful
CX = length
----------601A-------------------------------
INT 60 - FTP Packet Driver v1.10+ - EXTENDED FUNC - SEND RAW BYTES
AH = 1Ah
DS:SI -> buffer
CX = length of buffer
Return: CF set on error
DH = error code (see AX=01FFh)
CF clear if successful
SeeAlso: AH=1Ch
----------601B-------------------------------
INT 60 - FTP Packet Driver v1.10+ - EXTENDED FUNC - FLUSH RAW BYTES RECEIVED
AH = 1Bh
Return: CF set on error
DH = error code (see AX=01FFh)
CF clear if successful
SeeAlso: AH=1Ch
----------601C-------------------------------
INT 60 - FTP Packet Driver v1.10+ - EXTENDED FUNC - FETCH RAW BYTES RECEIVED
AH = 1Ch
DS:SI -> buffer
CX = length of buffer
DX = timeout in clock ticks
Return: CF set on error
DH = error code (see AX=01FFh)
CF clear if successful
CX = number of bytes transferred to buffer
SeeAlso: AH=1Ah,AH=1Bh
----------60AD-------------------------------
INT 60 - AccessDOS - API
AH = ADh
AL = function
E1h ???
Return: AX = ???
E2h get configuration
Return: BX:AX -> configuration data
Notes: AccessDOS is a public domain TSR developed at The Trace Research and
Development Center which provides extensions for keyboard, mouse,
and sound access by the visually, hearing, or motor-control
impaired.
INT 60 is the default vector; AccessDOS will use the first 0000h:0000h
vector in the range 60h through 66h.
----------61---------------------------------
INT 61 - reserved for user interrupt
----------61---------------------------------
INT 61 - Atari Portfolio - EXTENDED BIOS
provides subfunctions such as turning off the machine, accessing internal
variables, and mapping memory cards
SeeAlso: INT 60"Atari"
----------61---------------------------------
INT 61 - HP 95LX System Manager - LOAD DS
SeeAlso: INT 0F"HP 95LX",INT 60"HP 95LX"
----------61---------------------------------
INT 61 - JPI TopSPEED Modula-2 v1 - PROCEDURE EXIT TRAP
SeeAlso: INT 61"JPI"
----------61---------------------------------
INT 61 - Adaptec and OMTI controllers - DRIVE 0 DATA
Note: this vector stores the second four bytes of the parameter table for
hard disk 0
SeeAlso: INT 60"Adaptec",INT 62"Adaptec",INT 63"Adaptec"
----------61---------------------------------
INT 61 - Sangoma CCIP (CCPOP 3270 resident module) INTERFACE
BX:DX -> control block
SeeAlso: INT 67"Sangoma"
----------61---------------------------------
INT 61 - VIRUS - "SEMTEX"/"Screen Trasher" - INT 21h SUBSTITUTE
Note: the virus copies the original INT 21h vector into INT 61h
SeeAlso: INT 21h,INT 60"VIRUS",INT 6B"VIRUS"
----------61---------------------------------
INT 61 - FTP Software PC/TCP - TCP/IP TSR System Call interface
AH = system call number (see also entries below)
01h "pkt_alloc"
02h "pkt_free"
Return: CF clear if successful
CF set on error
AL = basic error (see below)
AH = suberror number
Notes: the installation check consists of testing for the signature "TCPTSR"
three bytes beyond the start of the interrupt handler
INT 61 is the default; PC/TCP v2.05 may be configured to use any
interrupt from 20h through E0h
BUG: the SLIP kernel for v2.05 bounds-checks the wrong register, so values
greater than 54h in AH may crash the system. Other kernels may have
this bug as well.
SeeAlso: INT 61/AH=00h"PC/TCP",INT 61/AH=2Ah,INT 61/AH=54h
Values for error code:
00h "NET_NOERR" successful
01h "NET_ERR_INUSE" protocol or socket already in use
02h "NET_DOS_ERR" MSDOS error (returned as suberror code in AH)
03h "NET_ERR_NOMEM" out of memory
04h "NET_ERR_NOTNETCONN" not a network descriptor
05h "NET_ERR_ILLEGALOP" invalid operation on given kind of network descriptor
06h "NET_ERR_BADPKT" illegal or corrupted packet
07h "NET_ERR_NOHOST" no host bound to specified connection
08h "NET_ERR_CANTOPEN" unable to open file
09h "NET_ERR_NET_UNREACHABLE" network is unreachable
0Ah "NET_ERR_HOST_UNREACHABLE" host is unreachable
0Bh "NET_ERR_PROT_UNREACHABLE" protocol is unreachable
0Ch "NET_ERR_PORT_UNREACHABLE" port is unreachable
0Dh "NET_ERR_TIMEOUT" operation timed out
0Eh "NET_ERR_HOSTUNKNOWN" unable to resolve host name
0Fh "NET_ERR_NOSERVERS" no name servers configured
10h "NET_ERR_SERVER_ERR" bad reply from name server
11h "NET_ERR_BADFORMAT" bad format for IP address or field in IP address struc
is zero
12h "NET_ERR_BADARG" invalid argument
13h "NET_ERR_EOF" foreign host closed its end of connection
14h "NET_ERR_RESET" connection has been reset
15h "NET_ERR_WOULDBLOCK" recv() call was done on a non-blocking connection
with no data available
16h "NET_ERR_UNBOUND" insufficient resources to do operation
17h "NET_ERR_NODESC" could not allocate network descriptor
18h "NET_ERR_BADSYSCALL" invalid/unsupported kernel call
19h "NET_ERR_CANTBROADCAST" unable to broadcast
1Ah "NET_ERR_NOTESTAB" operation illegal because connection not established
1Bh kernel busy, try again later
----------6100-------------------------------
INT 61 U - PC/TCP kernel v2.05 - GET DEBUG INFORMATION
AH = 00h
DS:SI -> 216-byte buffer for network debugging information (see below)
Return: CF clear
AX = 0000h
buffer filled
SeeAlso: INT 61"PC/TCP",INT 61/AH=2Ah"PC/TCP"
Format of network debugging information:
Offset Size Description
00h DWORD number of interrupts
04h DWORD receive buffer low-water mark
08h DWORD transmit buffer low-water mark
0Ch DWORD number of packets received
10h DWORD number of packets transmitted
14h DWORD total receive errors
18h DWORD total transmit errors
1Ch 4 BYTEs ???
20h DWORD receive resets
24h DWORD transmit resets
28h DWORD number of "runts" received
2Ch DWORD number of alignment errors on received packets
30h DWORD number of CRC errors on received packets
34h DWORD number of parity errors on received packets
38h DWORD number of receive overflow errors
3Ch DWORD number of oversized packets received
40h DWORD number of packets lost due to lack of buffers
44h DWORD receive timeouts
48h 32 BYTEs ???
68h DWORD number of transmit collisions
6Ch DWORD number of transmit timeouts
70h DWORD number of transmit underflows
74h DWORD number of lost "crs" on transmit
78h DWORD number of times heartbeat failed on transmit
7Ch 24 BYTEs ???
94h WORD free packet buffers
96h WORD total packet buffers
98h WORD minimum number of packet buffers free since kernel started
9Ah 24 BYTEs ???
B2h DWORD pointer to TCP connection list???
B6h DWORD pointer to IP routing table???
BAh 30 BYTEs ???
----------610000-----------------------------
INT 61 - OPTIMA 1024 VGA-Sync - ZOOM DISPLAY
AX = 0000h
BX = zoom factor (0-7)
Notes: zooms the display based on the given zoom factor
INT 61h is the default interrupt; the actual interrupt number can be
obtained by calling INT 16/AH=FFh
SeeAlso: INT 16/AH=FFh"OPTIMA",INT 61/AX=0001h"OPTIMA",INT 61/AX=0002h"OPTIMA"
SeeAlso: INT 61/AX=0005h"OPTIMA"
----------610001-----------------------------
INT 61 - Banyan VINES - "Sosock" - OPEN COMMUNICATIONS SOCKET
AX = 0001h
DS:DX -> communications control block (function 0001h)
Return: AX = status
0000h successful
0001h service not installed
0002h invalid service ID
0098h resource already in use
009Eh address family does not exist
009Fh socket type does not exist
00A0h protocol does not exist
00A1h no more sockets available
00A2h no more buffer space available
Note: BANYAN can use any interrupt from 60h through 66h. The Banyan
interrupt handler is identified by the string "BANV" in the four
bytes immediately preceding the interrupt handler
Format of control block:
Offset Size Description
00h WORD 0001h
02h WORD pointer to argument block
04h WORD error return code
06h 4 BYTEs reserved
Format of argument block:
Offset Size Description
00h WORD pointer to 2-byte buffer for socket identifier
02h WORD address family
0003h Banyan
04h WORD socket type
in address family 0003h
0001h IPC socket
0002h SPP socket
06h WORD protocol number
FFFFh default
08h WORD pointer to 16-byte buffer for socket address
0Ah WORD local port number
0000h if service should assign transient port number
0001h to 01FFh well-known port number (assigned by Banyan)
Format of IPC port:
Offset Size Description
00h WORD address family (always 0003h for Banyan ports)
04h 4 BYTEs network number (server's serial number)
06h WORD subnet number (0001h = server, 8000h-FFFEh = PC)
08h WORD port ID (0001h-01FFh for "well-known" ports)
0Ah BYTE hop count
0Bh 5 BYTEs filler
----------610001-----------------------------
INT 61 - Banyan VINES - "Sosend" - INITIATE OUTPUT EVENT
AX = 0001h
DS:DX -> communications control block (function 0002h)
Return: AX = status
0000h successful
0001h service not installed
0002h invalid service ID
0003h-000Ah reserved for BANV interface errors
0097h invalid socket identifier
009Bh destination node unreachable
009Ch message overflow
009Dh destination socket nonexistent
00A2h no more buffer space
00A3h timeout
00B1h resource disconnect
Note: BANYAN can use any interrupt from 60h through 66h. The Banyan
interrupt handler is identified by the string "BANV" in the four
bytes immediately preceding the interrupt handler
Format of control block:
Offset Size Description
00h WORD 0002h
02h WORD pointer to argument block (see below)
04h WORD error return code
0000h successful
0097h invalid socket ID
00A2h no more buffer space
00A3h timeout event
00A5h resource not available
00A6h internal communication failure
00B1h resource disconnect
06h 4 BYTEs reserved
Format of argument block:
Offset Size Description
00h WORD routine metric
02h WORD error return code
04h WORD socket identifier
06h WORD pointer to send buffer
08h WORD length of send buffer
0Ah WORD flags
bit 0: async request
1: reliable message
3: end of user message received
4: vectored request (if set, send buffer contains buffer
descriptors)
5: connection-specific receive
6: change to connection-specific receive mode
0Ch 16 BYTEs socket address (see below)
1Ch WORD timeout value in multiples of 200ms
1Eh WORD connection identifier
20h WORD type of request
0001h send message
0002h establish a virtual connection
0003h terminate a virtual connection
Format of buffer descriptor:
Offset Size Description
00h WORD data segment
02h WORD buffer pointer
04h WORD buffer length
06h WORD character count
Format of socket address for unreliable datagrams:
Offset Size Description
00h WORD 0003h address family
02h DWORD FFFFFFFFh network number
06h WORD FFFFh subnet number
08h WORD local port number
0Ah BYTE 00h-0Fh hop count
0Bh 5 BYTEs 0000h filler
----------610001-----------------------------
INT 61 - Banyan VINES - "Sorec" - RECEIVE INPUT EVENT NOTIFICATION
AX = 0001h
DS:DX -> communications control block (function 0003h)
Return: AX = status
0000h successful
0001h service not installed
0002h invalid service ID
0003h-000Ah reserved for BANV interface errors
0097h invalid socket identifier
00A2h no more buffer space
00A3h timeout
Note: BANYAN can use any interrupt from 60h through 66h. The Banyan
interrupt handler is identified by the string "BANV" in the four
bytes immediately preceding the interrupt handler
Format of control block:
Offset Size Description
00h WORD 0003h
02h WORD pointer to argument block (see below)
04h WORD error return code
0000h successful
0097h invalid socket ID
00A2h no more buffer space
00A3h timeout event
00A5h resource not available
00A6h internal communication failure
00B1h resource disconnect
06h 4 BYTEs reserved
Format of argument block:
Offset Size Description
00h WORD character count
02h WORD error return code
04h WORD socket identifier
06h WORD pointer to receive buffer
08h WORD length of receive buffer
0Ah WORD flags
bit 0: async request
2: flush receive buffer on overflow
3: end of user message received
4: vectored request (if set, receive buffer contains buffer
descriptors)
5: connection-specific receive
6: change to connection-specific receive mode
0Ch 16 BYTEs socket address
1Ch WORD timeout value in multiples of 200ms
1Eh WORD connection identifier
20h WORD type of response
0001h message received
0002h virtual connection established
0003h virtual connection terminated
Format of buffer descriptor:
Offset Size Description
00h WORD data segment
02h WORD buffer pointer
04h WORD buffer length
06h WORD character count
----------610001-----------------------------
INT 61 - Banyan VINES - "Soclose" - CLOSE A SOCKET
AX = 0001h
DS:DX -> communications control block (function 0004h)
Return: AX = status
0000h successful
0001h service not installed
0002h invalid service ID
0003h-000Ah reserved for BANV interface errors
0097h invalid socket identifier
Note: BANYAN can use any interrupt from 60h through 66h. The Banyan
interrupt handler is identified by the string "BANV" in the four
bytes immediately preceding the interrupt handler
Format of control block:
Offset Size Description
00h WORD 0004h
02h WORD pointer to argument block (see below)
04h WORD error return code
06h 4 BYTEs reserved
Format of argument block:
Offset Size Description
00h WORD socket identifier
----------610001-----------------------------
INT 61 - Banyan VINES - "Sowait" - WAIT FOR ASYNCHRONOUS EVENT COMPLETION
AX = 0001h
DS:DX -> communications control block (function 0005h)
Return: AX = status
0000h successful
0001h service not installed
0002h invalid service ID
0003h-000Ah reserved for BANV interface errors
00A2h no more buffer space available
00A3h timeout event
Notes: BANYAN can use any interrupt from 60h through 66h. The Banyan
interrupt handler is identified by the string "BANV" in the four
bytes immediately preceding the interrupt handler
returns results for all asynchronous operations invoked from the
data segment used for this call
Format of control block:
Offset Size Description
00h WORD 0005h
02h WORD pointer to argument block (see below)
04h WORD error return code
06h 4 BYTEs reserved
Format of argument block:
Offset Size Description
00h WORD pointer to WORD event pointer
02h WORD timeout in multiples of 200ms, FFFFh = infinite
----------610001-----------------------------
INT 61 - Banyan VINES - "Sosession" - REGISTER APPLICATION WITH COMM SERVICE
AX = 0001h
DS:DX -> communications control block (function 0008h)
Return: AX = status
0000h successful
00A2h no more buffer space available
Note: BANYAN can use any interrupt from 60h through 66h (default 61h). The
Banyan interrupt handler is identified by the string "BANV" in the
four bytes immediately preceding the interrupt handler
Format of control block:
Offset Size Description
00h WORD 0008h
02h WORD process type
0001h transient process
0002h resident process
04h WORD error return code
06h 4 BYTEs reserved
----------610001-----------------------------
INT 61 - Banyan VINES - "Soint" - SET USER COMPLETION FUNCTION
AX = 0001h
DS:DX -> communications control block (function 000Bh)
Return: AX = status
0000h successful
0001h service not installed
0002h invalid service ID
0003h-000Ah reserved for BANV interface errors
00A2h no more buffer space available
Notes: BANYAN can use any interrupt from 60h through 66h. The Banyan
interrupt handler is identified by the string "BANV" in the four
bytes immediately preceding the interrupt handler
FAR user function is invoked with SS,DS, and ES set to segment of
control block, and with the stack containing
DWORD return address
WORD argument pointer (sosend or sorec argument block)
WORD error return code
0000h argument pointer is valid
00A3h timeout
Format of control block:
Offset Size Description
00h WORD 000Bh
02h WORD pointer to argument block (see below)
04h WORD error return code
06h 2 BYTEs reserved
08h WORD user CS register
Format of argument block:
Offset Size Description
00h WORD pointer to user interrupt function
02h WORD pointer to user stack
04h WORD initial timeout value in multiples of 200ms, FFFFh = infinite
----------610001-----------------------------
INT 61 - OPTIMA 1024 VGA-Sync - CENTER ZOOM WINDOW
AX = 0001h
BX = X coordinate to center
CX = Y coordinate to center
Notes: Positions the zoom window such that the specified window-relative
coordinates appear as close as possible to the center of the
display. Useful for scrolling and panning.
INT 61h is the default interrupt; the actual interrupt number can be
obtained by calling INT 16/AH=FFh
SeeAlso: INT 16/AH=FFh"OPTIMA",INT 61/AX=0000h"OPTIMA",INT 61/AX=0002h"OPTIMA"
SeeAlso: INT 61/AX=0005h"OPTIMA"
----------610002-----------------------------
INT 61 - Banyan VINES - 3270 INTERFACE
AX = 0002h
BH = function
00h "pi2reset" reset 3270/SNA or 3270/BSC driver
02h "pi2bsc" (3270/BSC only)
03h "pi2get" get information stored in 3270 resident driver
04h "pi2put" store information in 3270 resident driver
05h "pi2gcur" get current screen position
07h "pi2sdat" send data keystroke
08h "pi2scom" send command keystroke
0Ah "pi2field" get field info for arbitrary screen positions
0Fh "pi2stat" get logical unit/device status
12h "pi2nlus" determine logical unit/device assignment
13h "pi2gate" specifies comm port address to gateway service
14h "pi2attach" attach a logical unit/device
15h "pi2sdev" save logical unit/device info in resident driver
(not supported in >3.0)
16h "pi2gdev" get device information (not supported in >3.0)
17h "pi2luinfo" get info about specific logical unit/device
18h "pi2gerr" get finer error detail
19h "pi2dhold" (3270/SNA only) holds a 3270 device
1Ah "pi2shut" release memory-resident module
1Ch "pi2sprof" save profile info in res driver (not supp in >3.0)
1Dh "pi2gprof" get prevsly stored profile info (not supp in >3.0)
DS:CX -> argument block (except BH=00h,1Ah)
Return: AX = status
0000h successful
000Bh invalid parameter or data does not fit data area
000Ch another code path currently active in resident driver
000Dh operation currently not allowed
0032h encountered connection disconnect error
0033h encountered "sosend" completion error
0034h encountered "sosend" communication error
0035h attach request refused. extended error info via "pi2gerr":
01h resource unavailable
02h invalid type
03h version mismatch
04h invalid logical unit number
05h error during ARL processing
06h no access for user
0071h encountered "sosock" error
0072h encountered unrecognizable error
0073h encountered "sowait" error (extended info via "pi2gerr")
0074h encountered invalid type-of-request on "sowait"
0075h encountered "sorec" error (extended info via "pi2gerr")
0076h encountered "sorec" completion error (ext info via "pi2gerr")
0077h encountered connection request
0078h encountered unrecognizable data
0079h encountered unknown connection ID (ext info via "pi2gerr")
Notes: Either 3270/SNA or 3270/BSC interface may use AX=0002h, depending on
which is loaded first. The other interface will use AX=000Ah
Status codes greater than 63h indicate an inconsistency in the 3270/SNA
or 3270/BSC resident driver, which must be reloaded by the user
Format of argument block for BH=03h,04h:
Offset Size Description
00h WORD size of data area (max 256)
02h N BYTEs data area
Format of argument block for BH=05h:
Offset Size Description
00h WORD logical unit/device number
02h WORD pointer to WORD buffer for cursor index
04h WORD pointer to BYTE buffer for current field attribute
Format of argument block for BH=07h:
Offset Size Description
00h WORD logical unit/device number
02h WORD ASCII data byte
04h WORD pointer to WORD count of characters which will need updating
Format of argument block for BH=08h:
Offset Size Description
00h WORD logical unit/device number
02h WORD keystroke
0000h Enter
0001h Clear
0002h PA1
0003h PA2
0004h PA3
0005h PF1
...
001Ch PF24
001Dh CSELECT (cursor select)
001Eh Insert
001Fh Delete
0020h EOField
0021h EINPUT (erase input)
0022h Reset
0023h Attention
0024h SysReq
0025h Duplicate
0026h Fieldmark
0027h Home
0028h NextLine
0029h Tab
002Ah BackTab
002Bh cursor up
002Ch cursor down
002Dh cursor right
002Eh cursor left
002Fh double cursor right
0030h double cursor left
0031h PRINT
0032h CANCEL
0033h Backspace
Format of argument block for BH=0Ah:
Offset Size Description
00h WORD logical unit/device number
02h WORD screen index
04h WORD pointer to WORD buffer for field length
06h WORD pointer to WORD buffer for offset in screen of field start
Format of argument block for BH=0Fh:
Offset Size Description
00h WORD logical unit/device number
02h WORD clear mask (clear these bits of status after returning status)
04h WORD pointer to WORD buffer for status
bit 10: status modified
bit 9: buffer modified
bit 8: set cursor
bit 5: sound alarm
bits 0,1: size of print line for printer logical units
00 unformatted line
01 40-character line
10 64-character line
11 80-character line
Format of argument block for BH=12h:
Offset Size Description
00h WORD pointer to WORD buffer for number of logical units or devices
02h WORD pointer to WORD buffer for version number
04h WORD pointer to 64-byte buffer for logical unit/device list
Format of argument block for BH=13h:
Offset Size Description
00h 16 BYTEs communications port address (see AX=0001h#"Sosock")
Format of argument block for BH=14h:
Offset Size Description
00h WORD logical unit/device number
0000h attach any free device of the specified type
02h WORD logical unit/device type
(3270/SNA) 01h, 02h, or 03h
(3270/BSC) 02h display
(3270/BSC) 03h printer
04h WORD pointer to WORD buffer for attached logical unit/device number
Format of argument block for BH=16h:
Offset Size Description
00h WORD pointer to 18-byte buffer for device block (see below)
first WORD must be set to desired logical unit/device number
Format of argument block for BH=17h:
Offset Size Description
00h WORD logical unit/device number
02h WORD pointer to information block in caller's DS (see below)
Format of argument block for BH=18h:
Offset Size Description
00h WORD pointer to WORD buffer for major error code
02h WORD pointer to WORD buffer for minor error code
Format of argument block for BH=19h:
Offset Size Description
00h WORD logical unit/device number
Format of argument block for BH=1Ch,1Dh:
Offset Size Description
00h WORD pointer to profile block in caller's DS (see below)
Format of device block, argument block for BH=15h:
Offset Size Description
00h WORD logical unit/device number
02h WORD logical unit/device type
04h WORD display model number
06h WORD numeric checking
08h WORD status line
0Ah BYTE unprotected normal field attribute
0Bh BYTE unprotected intensified field attribute
0Ch BYTE protected normal field attribute
0Dh BYTE protected intensified field attribute
0Eh WORD reserved
10h WORD printer port number
Format of information block:
Offset Size Description
00h WORD device model number
02h DWORD screen buffer pointer
06h DWORD status line pointer (see below)
0Ah DWORD reserved
Format of status line:
Offset Size Description
00h BYTE comm line status
00h inactive
01h active
01h BYTE activation level
01h physical unit activated
02h logical unit also activated
03h session is bound
02h BYTE data traffic state
00h inactive
01h active
03h BYTE screen ownership
00h SLU->PLU sessoin owns screen
01h SLU->SSCP session owns screen
04h BYTE keyboard status
00h UNLOCK - ready to accept data
01h TIME - aid was struck
02h SYSTEM - received response no restore
03h FUNCTION - unavailable keyboard function
04h INPUT - not currently used
05h ENDFIELD - field filled in insert mode
06h PROTECTED - attempt to enter in protected field
07h NUMERIC - attempt to enter in numeric field
08h PROGRAM - error in outbound data stream
05h BYTE insert mode
01h if in insert mode
06h BYTE numeric
01h if current screen buffer is numeric only
07h BYTE printer status
00h printer not assigned
01h printer is inactive
02h printer error
03h currently printing
04h printer is busy
05h printer is very busy
08h BYTE printer assignment
09h BYTE maximum size of network name
0Ah N BYTEs ASCIZ network name
BYTE maximum size of message window
M BYTEs null-terminated message window
BYTE code set
00h EBCDIC
01h ASCII
M BYTEs extended attributes
01h extended attributes are in effect (stored at screen+1920)
each extended attribute specifies
bits 0,1: 00=normal, 01=blink, 10=reverse, 11=underscor
bits 2-4: 000=default,001=blue,010=red,011=pink,
100=green,101=turquoise,110=yellow,111=white
BYTE extended color
01h other than base color is in effect
Format of profile block:
Offset Size Description
00h 64 BYTEs gateway service name
40h 16 BYTEs gateway comm port address
50h WORD primary logical unit number
52h WORD secondary logical unit type
54h WORD secondary logical unit number
56h WORD printer assignment
58h 50 BYTEs keyboard definitions filename
----------610002-----------------------------
INT 61 - OPTIMA 1024 VGA-Sync - END ZOOM
AX = 0002h
Note: switches off zoom and returns window to its original state
INT 61h is the default interrupt; the actual interrupt number can be
obtained by calling INT 16/AH=FFh
SeeAlso: INT 16/AH=FFh"OPTIMA",INT 61/AX=0000h"OPTIMA"
----------610003-----------------------------
INT 61 - Banyan VINES - ASYNCHRONOUS TERMINAL EMULATION
AX = 0003h
DS:BX -> argument block with function number (see below)
Return: AX = status
0000h successful
000Bh invalid session ID
000Ch session not active
000Dh invalid request type
000Eh invalid parameters
000Fh out of heap space
0010h timeout on send
0011h Banyan communications error
0012h session not waiting for host
0013h session is active
0014h duplicate suspend session request
0015h no session suspended
0016h ring data buffer full
0017h printer error encountered
0018h Banyan communications error
0019h unable to make connection
001Ah no ring buffer specified at startup
001Bh service is down
001Ch invalid service name
001Dh service is closed
001Eh invalid connection name
001Fh max session limit reached for service
0020h access rights list for connection/dialout does not include
this user
0021h service not responding
0022h missing telephone number
Format of argument block:
Offset Size Description
00h BYTE session ID (00h)
01h BYTE asynchronous interface request number
00h initialize user buffer pointer information area
01h send to host
02h "control monitor"
03h "flow control data": freeze/unfreeze display, ring buffer
04h end active session
05h set session parameter
06h get session parameter
07h set tab settings
08h get tab settings
09h refresh emulation screen
0Ah suspend session temporarily
0Bh restore previously suspended session
0Ch set state of scroll lock checking
0Dh exit emulation
0Eh interrupt on character from host
0Fh start a session
10h start/stop printing of data received from host
11h get file transfer parameters
12h get connection information
13h start/stop tracing data traffic in session
14h interrupt on message from host
15h reset error
---request=00h---
02h WORD pointer to info area in caller's current DS
Offset Size Description
00h WORD flags
0000h don't read interface's data buffer
0001h read data buffer
02h DWORD pointer to ring buffer
06h WORD length of ring buffer
08h WORD ring buffer offset to last byte read by caller
0Ah DWORD pointer to WORD containing offset of last byte
in ring buffer filled
0Eh DWORD pointer to screen buffer
12h DWORD pointer to field containing cursor position
16h DWORD pointer to terminal status area (see below)
---request=01h---
02h BYTE type
00h ASCII byte
01h ASCII string
02h terminal function code
03h up arrow
04h down arrow
05h left arrow
06h right arrow
07h break
03h N BYTEs type-specific info
Offset Size Description
---ASCII byte---
03h BYTE byte to send to host
---ASCII string---
03h WORD length of string
05h WORD pointer to string
---terminal function code (VT52/VT100)---
03h BYTE function code
00h keypad 0
01h keypad 1
...
09h keypad 9
0Ah keypad -
0Bh keypad ,
0Ch keypad .
0Dh keypad ENTER
0Eh PF1
0Fh PF2
10h PF3
11h PF4
---terminal function code (IBM3101)---
03h BYTE function code
00h PF1
...
07h PF8
08h Home
---request=02h---
02h BYTE display flag
00h don't display data received from host
01h display data
---request=03h---
02h BYTE flow control flag
00h allow characters to be put into display or ring buffer
01h don't place any more characters into display or ring buffer
---request=05h,06h---
02h BYTE parameter number
00h line speed (00h=any, 01h=50, 02h=110, 03h=134.5, 04h=150,
05h=300,06h=600,07h=1200,08h=2400,09h=4800, 0Ah=9600)
01h parity (00h=none, 01h=odd, 02h=even)
02h duplex (00h=full, 01h=half)
03h character size (00h=7 bits, 01h=8 bits)
04h stop bits (00h=1, 01h=2)
05h XON/XOFF flow control (00h=no, 01h=yes)
07h intercharacter delay in tenths of a second
08h interline delay in tenths of a second
09h auto linefeed (00h=no, 01h=yes)
0Ah filter control characters (00h=no, 01h=yes)
0Bh terminal type (00h=VT100,01h=glassTTY,02h=VT52,03h=IBM3101)
0Ch auto wrap (00h=no, 01h=yes)
0Dh cursor shape (00h=underscore, 01h=block)
0Eh character set (00h=UK, 01h=US ASCII)
0Fh printer port (00h=LPT1, 01h=LPT2, 02h=LPT3)
03h BYTE parameter value (returned for 06h)
---request=07h,08h---
02h WORD pointer to 80-byte buffer in caller's current DS
each byte = 00h if no tab, 01h if tab at that position
---request=0Ah---
02h WORD size of session information to be saved
04h WORD pointer to buffer in caller's DS
---request=0Bh---
02h WORD size of buffer into which session info is restored
04h WORD pointer to buffer in caller's DS
---request=0Ch---
02h BYTE check_scroll_lock flag
00h off
01h on (display of host data stopped while ScrollLock on)
---request=0Eh,14h---
02h DWORD pointer to routine to be called (0000h:0000h = don't call)
06h DWORD stack pointer to use when call is made
---request=0Fh---
02h WORD pointer to information area in caller's current DS
Offset Size Description
00h WORD length of service name
02h WORD pointer to service name in caller's DS
04h BYTE type of connection
(00h=connection name, 01h=dialout)
05h WORD length of connection name/telephone number
07h WORD pointer to connection name/telephone number
---request=10h---
02h WORD print capture flag (00h=off, 01h=on)
---request=11h---
02h WORD pointer to info area in caller's current DS
Offset Size Description
00h BYTE protocol flag (00h none, 01h Kermit)
01h BYTE direction flag (00h send, 01h receive)
02h BYTE length of null-terminated PC filename
03h DWORD pointer to null-terminated PC filename
07h BYTE length of null-terminated host filename
08h DWORD pointer to null-terminated host filename
---request=12h---
02h WORD pointer to info area in caller's current DS (see below)
Offset Size Description
00h WORD length of service name (returned)
02h WORD pointer to 64-byte buffer for service name
04h BYTE type of connection
00h connection name
01h dialout
05h WORD length of connection name/telephone number
07h WORD pointer to 64-byte buffer for name/telno
09h BYTE server line number being used (returned)
---request=13h---
02h BYTE trace flag (00h=off, 01h=on)
Format of terminal status area:
Offset Size Description
00h BYTE status of session: 4Eh=oNline, 46h=oFfline, 57h=Waiting
01h BYTE terminal type (00h=VT100, 01h=TTY, 02h=VT52, 03h=IBM3101)
02h BYTE current keypad mode (VT100,VT52 only)
4Eh ("N") numeric mode
41h ("A") application mode
03h 4 BYTEs current state of LEDs (VT100 only)
00h off
01h on
07h WORD line error count
09h WORD primary error code
0000h no error
0001h unable to make connection
0002h communications error, restart session
0003h async terminal emulation service unavailable
0004h lost carrier
0005h all matching lines busy
0006h no lines defined for connection name
0007h no dial lines available on server
0008h no matching dial lines available
0009h out of heap space
000Ah service error encountered
000Bh timed out waiting to connect
000Ch communications error
000Dh communications error
000Eh host wants file transferred to/from PC
000Fh host software changed session parameter
0010h host software changed tap settings
0011h host software changed LED indicator
0012h host software changed display background (secondary error
code 00h for white on black, 01h for black on white)
0013h host software changed display option (secondary error
code 00h for off, 01h for on)
0014h communications error
0015h communications error
0016h unable to make connection
0017h unable to make connection
0Bh WORD secondary error code
----------610003-----------------------------
INT 61 - OPTIMA 1024 VGA-Sync - REPORT ZOOM FACTOR
AX = 0003h
Return: AX = zoom factor
Note: returns the current zoom factor
INT 61h is the default interrupt; the actual interrupt number can be
obtained by calling INT 16/AH=FFh
SeeAlso: INT 16/AH=FFh"OPTIMA",INT 61/AX=0000h"OPTIMA",INT 61/AX=0005h"OPTIMA"
----------610004-----------------------------
INT 61 - Banyan VINES - GET SERVER SERIAL NUMBER
AX = 0004h
DS:DX -> request block (function 0008h)
Return: AX = status
0000h server ID returned in request block
000Fh invalid drive
0015h drive not ready
Format of request block:
Offset Size Description
00h WORD 0008h
02h WORD drive number (0=default, 1=A, ...)
04h 6 BYTEs buffer for server ID
----------610004-----------------------------
INT 61 - OPTIMA 1024 VGA-Sync - ENTER SPECIFY MODE
AX = 0004h
Note: Specify Mode is enabled by hot key (seeAlso below), and allows
panning and zooming via the numeric keypad.
INT 61h is the default interrupt; the actual interrupt number can be
obtained by calling INT 16/AH=FFh
The Zoom interrupt no. can be obtained with function INT 16h,AH=0FFh
SeeAlso: INT 16/AH=FFh"OPTIMA",INT 61/AX=0000h"OPTIMA",INT 61/AX=0007h"OPTIMA"
----------610005-----------------------------
INT 61 - Banyan VINES - PRINTER CONTROL
AX = 0005h
DS:DX -> request block
Return: AX = status
0000h successful
0001h network software not installed or incompatible
SeeAlso: INT 2F/AX=D702h
Format of request block:
Offset Size Description
00h WORD function
0201h "endspool" all data for a print job has been sent
0205h "getactive" get currently active printer port
02h WORD number of active port (1-3)
04h WORD ??? (0 for func 0201h, 3 for func 0205h)
06h WORD 0000h
----------610005-----------------------------
INT 61 - OPTIMA 1024 VGA-Sync - QUERY ZOOM WINDOW
AX = 0005h
BX:CX -> buffer for window parameters (see below)
Note: INT 61h is the default interrupt; the actual interrupt number can be
obtained by calling INT 16/AH=FFh
SeeAlso: INT 16/AH=FFh"OPTIMA",INT 61/AX=0000h"OPTIMA",INT 61/AX=0003h"OPTIMA"
SeeAlso: INT 61/AX=0006h"OPTIMA"
Format of window parameters:
Offset Size Description
00h WORD X start of zoom window
02h WORD Y start of zoom window
04h WORD X end of zoom window
06h WORD Y end of zoom window
08h WORD current zoom factor
0Ah WORD zoom offset start X
0Ch WORD zoom offset start Y
----------610006-----------------------------
INT 61 - OPTIMA 1024 VGA-Sync - SET ZOOM WINDOW
AX = 0006h
BX:CX -> zoom window description (see below)
Notes: width of zoom window must be a multiple of the pixel replication
factor
INT 61h is the default interrupt; the actual interrupt number can be
obtained by calling INT 16/AH=FFh
SeeAlso: INT 16/AH=FFh"OPTIMA",INT 61/AX=0000h"OPTIMA",INT 61/AX=0001h"OPTIMA"
SeeAlso: INT 61/AX=0005h"OPTIMA",INT 61/AX=0008h"OPTIMA"
Format of zoom window description:
Offset Size Description
00h WORD X start of zoom window
02h WORD Y start of zoom window
04h WORD X end of zoom window
06h WORD Y end of zoom window
----------610007-----------------------------
INT 61 - OPTIMA 1024 VGA-Sync - QUERY APPLICATION KEY
AX = 0007h
Return: AX = 0000h/0001h
Notes: In specify mode, the END key has been reserved for applications.
Returns the current toggle state of that key. E.g. in the
OPTIMA AutoCAD driver, 0 means, AutoCAD calls subfunction 0001h
every time the cross cursor moves.
INT 61h is the default interrupt; the actual interrupt number can be
obtained by calling INT 16/AH=FFh
SeeAlso: INT 16/AH=FFh"OPTIMA",INT 61/AX=0000h"OPTIMA",INT 61/AX=0001h"OPTIMA"
SeeAlso: INT 61/AX=0004h"OPTIMA",INT 7A"AutoCAD"
----------610007BX0002-----------------------
INT 61 - Banyan VINES - GET PORTS FOR A SERVICE
AX = 0007h
BX = 0002h
DS:DX -> StreetTalk service name
DS:DI -> port record block (see below)
Return: AX = status
0000h successful
0001h PC network software not installed or incompatible
03E9h incorrect name syntax
03EAh organization name too long
03EBh group name too long
03ECh item name too long
03EDh StreetTalk name too long
03F3h organization not found
03F4h group not found
03F5h StreetTalk name not found
03F8h not a StreetTalk name
040Dh appropriate StreetTalk name unavailable
Format of port record block:
Offset Size Description
00h WORD number of 17-byte elements
02h 17 BYTEs element (byte 00h = input port type, bytes 01h-10h = port)
(see AX=0001h#"Sosock" for port format)
----------610007BX0004-----------------------
INT 61 - Banyan VINES - SET PORTS FOR A SERVICE
AX = 0007h
BX = 0004h
DS:DX -> StreetTalk name of service
DS:DI -> port record block (see below)
Return: AX = status
0000h successful
0001h PC network software not installed or incompatible
03E9h incorrect name syntax
03EAh organization name too long
03EBh group name too long
03ECh item name too long
03EDh StreetTalk name too long
03F3h organization not found
03F4h group not found
03F5h StreetTalk name not found
03F8h not a StreetTalk name
0409h modify access denied
040Dh appropriate StreetTalk name unavailable
Format of port record block:
Offset Size Description
00h WORD number of 17-byte elements
02h 17 BYTEs element: byte 00h = input port type, 01h-10h = port
(see AX=0001h#"Sosock" for port format)
----------610007BX0005-----------------------
INT 61 - Banyan VINES - GET USER NAME
AX = 0007h
BX = 0005h
DS:DX -> 64-byte buffer for user's StreetTalk name
Return: AX = status
0000h successful
0001h network software not installed or incompatible
Note: if no user logged in, first byte of returned name will be 00h
----------610007BX0006-----------------------
INT 61 - Banyan VINES - TRANSLATE ERROR INTO ASCII STRING
AX = 0007h
BX = 0006h
SI = error code (>100)
DS:DX -> 80-byte buffer for error text
Return: AX = status
0000h successful
0001h network software not installed or incompatible
----------610007BX0007-----------------------
INT 61 - Banyan VINES - VERIFY EXISTENCE OF NAME AND RETURN CANONICAL FORM
AX = 0007h
BX = 0007h
DS:DX -> NiceName block (see below)
Return: AX = status
0000h successful
0001h PC network software not installed or incompatible
03E9h incorrect name syntax
03EAh organization name too long
03EBh group name too long
03ECh item name too long
03EDh StreetTalk name too long
03F3h organization not found
03F4h group not found
03F5h StreetTalk name not found
03F8h not a StreetTalk name
040Dh appropriate StreetTalk name unavailable
SeeAlso: AX=0007h/BX=0008h
Format of NiceName block:
Offset Size Description
00h WORD type of name
0064h organization
00C8h group
012Ch item
02h WORD pointer to ASCIZ input name
04h WORD pointer to 64-byte buffer for output name
----------610007BX0008-----------------------
INT 61 - Banyan VINES - ENUMERATE StreetTalk NAMES
AX = 0007h
BX = 0008h
DS:DX -> enumerate block (see below)
Return: AX = status
0000h successful
0411h all matching names have been returned
0412h some groups unavailable, all available matches returned
Note: each program using this call should continue until a nonzero status
is returned; otherwise, some resources will not be freed for several
hours
SeeAlso: AX=0007h/BX=0007h
Format of enumerate block:
Offset Size Description
00h WORD return code
02h WORD pointer to pattern string
04h WORD enumerate type
0064h organization
00C8h group
012Ch item
06h WORD enumerate class
0000h unspecified (return all matching items)
0001h user names
0002h service names
0003h list names
0004h nicknames
08h WORD pointer to category criteria block (see below) or 0
0Ah WORD pointer to array of 64-byte returned names
0Ch WORD number of names returned
0Eh 6 BYTEs reserved for subsequent enumerated calls (set to zeros on first
call)
Format of category criteria block:
Offset Size Description
00h WORD exclude flag
0000h return only items with the specified categories
0001h return all items except those with the given categories
02h WORD number of categories
04h WORD category 1 value
06h WORD category 2 value
...
Values for common service categories:
0002h file service
0003h print service
0004h mail service
0005h StreetTalk
0006h time service
0008h semaphore service
0009h 3270/SNA service
000Ah asynchronous terminal emulation service
000Ch NETBIOS service
000Dh PC-based service
----------610008-----------------------------
INT 61 - OPTIMA 1024 VGA-Sync - SET ZOOM OFFSET
AX = 0008h
BX = X start of zoom offset
CX = Y start of zoom offset
Notes: specifies the first byte of video memory to appear in the zoom window
INT 61h is the default interrupt; the actual interrupt number can be
obtained by calling INT 16/AH=FFh
SeeAlso: INT 16/AH=FFh"OPTIMA",INT 61/AX=0000h"OPTIMA",INT 61/AX=0006h"OPTIMA"
----------610008BX0002-----------------------
INT 61 - Banyan VINES - POST MESSAGE ON LOCAL DISPLAY
AX = 0008h
BX = 0002h
CX = flags
bit 0: message will remain on screen until user presses ^X
bit 1: ring bell after displaying message
bit 2: blink
DS:DX -> ASCIZ string to display (only first 80 chars used)
Return: AX = status
0000h successful
000Bh message display function currently busy
000Ch message queue full
Note: queues up to three messages to be displayed on the bottom line
----------610008BX0003-----------------------
INT 61 - Banyan VINES - INTERCEPT VINES 25th-LINE MESSAGES AT LOCAL PC
AX = 0008h
BX = 0003h
DS:DX -> request block
Return: AX = status
0000h successful
0001h network software not installed or incompatible
Notes: message handler should not call BIOS or DOS functions, and should
either call next handler or simply return
to stop intercepting messages, set prev and next request blocks to
point at each other
Format of request block:
Offset Size Description
00h DWORD pointer to user-written message handler
04h DWORD pointer to next request block (filled in by VINES)
08h DWORD pointer to previous request block (filled in by VINES)
0Ch DWORD pointer to message storage area (filled by VINES) (see below)
Format of message storage area:
Offset Size Description
00h 16 BYTEs IPC port of message sender (see AX=0001h#"Sosock")
10h BYTE message flags
11h WORD reserved
13h BYTE length of message
14h 80 BYTEs message text
----------61000A-----------------------------
INT 61 - Banyan VINES - SECONDARY 3270 INTERFACE
AX = 000Ah
Notes: either 3270/SNA or 3270/BSC interface will use AX=000Ah, depending on
which is loaded second. The first interface loaded will use AX=0002h
SeeAlso: INT 61/AX=0002h
----------6101-------------------------------
INT 61 - Banyan VINES - CHECK SERVICE
AH = 01h
AL = service ID
01h communications
02h primary 3270 emulation
03h async terminal emulation
04h file deflection
07h StreetTalk
08h environment
0Ah secondary 3270 emulation
0Bh semaphore service
0Ch 3270 emulation active status
0Dh 3270 keyboard interrupt simulator
Return: AX = status
0000h installed
0001h not installed
0002h invalid ID
----------6102-------------------------------
INT 61 - Banyan VINES - GET REVISION NUMBER
AH = 02h
DS:DX -> 2-byte buffer for result
Return: AX = 0000h installed
DS:DX buffer contains revision number as
10000d * major_ver + 100d * minor_ver + patch_revision
----------6105-------------------------------
INT 61 u - PC/TCP kernel v2.05 - "get_addr" - ???
AH = 05h
BX = connection handle???
Return: CF clear if successful
DX:AX = ???
CF set on error
AX = error code (see INT 61"PC/TCP")
Notes: the installation check consists of testing for the signature "TCPTSR"
three bytes beyond the start of the interrupt handler
INT 61 is the default; PC/TCP v2.05 may be configured to use any
interrupt from 20h through E0h
SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=06h
----------6106-------------------------------
INT 61 u - PC/TCP kernel v2.05 - "net_info" - GET INTERFACE STATISTICS
AH = 06h
BX = connection handle???
DS:SI -> 38-byte buffer (see below)
Return: CF clear if successful
buffer filled
CF set on error
AX = error code (see INT 61"PC/TCP")
SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=05h
Format of buffer:
Offset Size Description
00h WORD ???
02h WORD ???
04h WORD ???
06h DWORD IP address of interface (big-endian)
0Ah DWORD subnet mask
0Eh WORD ??? (apparently always 0001h)
10h DWORD total packets received
14h DWORD total packets sent
18h DWORD receive errors
1Ch DWORD send errors
20h WORD ??? (apparently always 0006h)
22h DWORD pointer to ???
----------6107-------------------------------
INT 61 u - PC/TCP kernel v2.05 - "net_globalize" - ???
AH = 07h
BX = connection handle???
Return: CF clear if successful
AX = ???
CF set on error
AX = error code (see INT 61"PC/TCP")
SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
----------6108-------------------------------
INT 61 u - PC/TCP kernel v2.05 - "net_release" - ???
AH = 08h
BX = connection handle???
Return: CF clear if successful
CF set on error
AX = error code (see INT 61"PC/TCP")
SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
----------6109-------------------------------
INT 61 u - PC/TCP kernel v2.05 - "net_releaseall" - ??? ALL
AH = 09h
Return: CF clear
Notes: performs function 08h on every connection handle???
the installation check consists of testing for the signature "TCPTSR"
three bytes beyond the start of the interrupt handler
INT 61 is the default; PC/TCP v2.05 may be configured to use any
interrupt from 20h through E0h
SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
----------610A-------------------------------
INT 61 - PC/TCP kernel v2.05 - "net_send" - ???
AH = 0Ah
???
Return: ???
----------610B-------------------------------
INT 61 - PC/TCP kernel v2.05 - "net_sendto" - ???
AH = 0Bh
???
Return: ???
----------610C-------------------------------
INT 61 u - PC/TCP kernel v2.05 - "net_stat" - GET CONNECTION STATISTICS
AH = 0Ch
BX = connection handle???
FFFCh for kernel ICMP statistics
FFFDh for kernel UDP statistics
FFFEh for kernel IP statistics
FFFFh for kernel TCP statistics
DS:DX -> 64-byte buffer
Return: CF clear if successful
buffer filled
CF set on error
AX = error code (see INT 61"PC/TCP")
SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
Format of handle statistics:
Offset Size Description
00h 4 BYTEs unused
04h DWORD ???
08h 8 BYTEs unused
10h DWORD ???
14h DWORD ???
18h 12 BYTEs unused
24h DWORD ???
28h 24 BYTEs unused
Format of kernel TCP statistics:
Offset Size Description
00h 16 BYTEs unused
10h DWORD bytes sent
14h DWORD bytes received
18h 8 BYTEs unused
20h DWORD packets sent
24h DWORD packets received
28h DWORD bad checksums
2Ch DWORD protocol errors
30h DWORD timeouts
34h DWORD resets
38h DWORD duplicate packets
3Ch DWORD retransmits
Format of kernel IP statistics:
Offset Size Description
00h 8 BYTEs unused
08h DWORD ??? errors
0Ch DWORD ??? errors
10h DWORD ???
14h DWORD ??? errors
18h DWORD security errors
1Ch DWORD ??? errors
20h DWORD packets sent
24h DWORD packets received
28h DWORD bad checksums
2Ch DWORD protocol errors
30h DWORD timeouts
34h DWORD errors
38h DWORD fragments
3Ch
Format of kernel UDP statistics:
Offset Size Description
00h 32 BYTEs unused
20h DWORD packets sent
24h DWORD packets received
28h DWORD bad checksums
2Ch DWORD port not listening errors
30h 4 BYTEs unused
34h DWORD truncated receives
38h 8 BYTEs unused
Format of kernel ICMP statistics:
Offset Size Description
00h DWORD "TimeEx" sent
04h DWORD "TimeEx" received
08h DWORD "ParamProb" sent
0Ch DWORD "ParamProb" received
10h DWORD redirects received
14h DWORD source quenches received
18h DWORD ???
1Ch DWORD ???
20h DWORD packets sent
24h DWORD packets received
28h DWORD bad packets received
2Ch DWORD "DestUn" received
30h DWORD packet send errors
34h DWORD "DestUn" sent
38h DWORD ???
3Ch DWORD ???
----------610D-------------------------------
INT 61 u - PC/TCP kernel v2.05 - "is_netnd" - CHECK IF CONNECTION HANDLE VALID
AH = 0Dh
BX = connection handle
Return: CF clear if valid
CF set on error
AX = error code (see INT 61"PC/TCP")
SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
----------610E-------------------------------
INT 61 u - PC/TCP kernel v2.05 - "net_select" - ???
AH = 0Eh
BX = ???
DS:DX -> ???
ES:DI -> ???
Return: CF clear
???
Notes: the installation check consists of testing for the signature "TCPTSR"
three bytes beyond the start of the interrupt handler
INT 61 is the default; PC/TCP v2.05 may be configured to use any
interrupt from 20h through E0h
SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
----------610F-------------------------------
INT 61 u - PC/TCP kernel v2.05 - "get_netversion" - GET SOFTWARE VERSION
AH = 0Fh
Return: CF clear
AX = version (AH = major, AL = minor)
BX = patch level
SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
----------6110-------------------------------
INT 61 u - PC/TCP kernel v2.05 - "net_shutdown" - UNINSTALL
AH = 10h
Return: CF clear if successful
CF set on error???
SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
----------6111-------------------------------
INT 61 u - PC/TCP kernel v2.05 - "disable_async" - ???
AH = 11h
Return: CF clear
AX = ???
Note: clears location whose value is returned in AX and decrements another if
it is not already zero
SeeAlso: INT 61"PC/TCP",INT 61/AH=12h
----------6112-------------------------------
INT 61 u - PC/TCP kernel v2.05 - "enable_async" - ???
AH = 12h
Return: CF clear
AX = ???
Note: sets location whose value is returned in AX to 0001h and performs other
actions if another location is nonzero; these two locations are the
same ones used by AH=11h
SeeAlso: INT 61"PC/TCP",INT 61/AH=11h
----------6113-------------------------------
INT 61 u - PC/TCP kernel v2.05 - "net_connect" - ???
AH = 13h
BX = connection handle??? or FFFFh
DX = protocol
0000h ??? (returns error 0016h)
0001h ???
0002h ???
0003h ???
0004h ???
0005h ???
DS:SI -> result buffer???
Return: CF clear if successful
AX = connection handle???
CF set on error
AX = error code (see INT 61"PC/TCP")
Note: invokes AH=22h if BX=FFFFh on entry; also invokes AH=19h in various
cases
SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=23h
----------6114-------------------------------
INT 61 u - PC/TCP kernel v2.05 - "net_recv" - NO LONGER SUPPORTED
AH = 14h
BX = connection handle???
Return: CF set
AX = 0018h (see INT 61"PC/TCP")
Note: displays error message "Illegal system call! Please upgrade your
PCserver software" to standard output
SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
----------6115-------------------------------
INT 61 - PC/TCP kernel v2.05 - "net_recvfrom" - ???
AH = 15h
???
Return: ???
----------6116-------------------------------
INT 61 u - PC/TCP kernel v2.05 - "net_peer" - GET ADDRESS OF REMOTE PEER???
AH = 16h
BX = connection handle???
DS:DX -> 9-byte buffer for ???
Return: CF clear if successful
???
CF set on error
AX = error code (see INT 61"PC/TCP")
SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
----------6117-------------------------------
INT 61 u - PC/TCP kernel v2.05 - "net_reconfig" - ???
AH = 17h
Return: CF clear if successful
CF set on error
AX = error code (see INT 61"PC/TCP")
SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
----------6118-------------------------------
INT 61 u - PC/TCP kernel v2.05 - "net_eof" - ???
AH = 18h
BX = connection handle???
Return: CF clear if successful
CF set on error
AX = error code (see INT 61"PC/TCP")
SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
----------6119-------------------------------
INT 61 u - PC/TCP kernel v2.05 - "net_abort" - ???
AH = 19h
BX = connection handle???
Return: CF clear if successful
CF set on error
AX = error code (see INT 61"PC/TCP")
SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
----------611A-------------------------------
INT 61 u - PC/TCP kernel v2.05 - "net_write" - ???
AH = 1Ah
BX = connection handle???
CX = ???
DX = ???
DS:SI -> ???
Return: CF clear if successful
AX = ???
DX = ???
CF set on error
AX = error code (see INT 61"PC/TCP")
Notes: the installation check consists of testing for the signature "TCPTSR"
three bytes beyond the start of the interrupt handler
INT 61 is the default; PC/TCP v2.05 may be configured to use any
interrupt from 20h through E0h
SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=1Bh,INT 61/AH=1Ch
----------611B-------------------------------
INT 61 u - PC/TCP kernel v2.05 - "net_read" - ???
AH = 1Bh
BX = connection handle???
CX = ???
DX = ???
DS:SI -> ???
ES:DI -> ???
Return: CF clear if successful
CX = ???
DX = ???
CF set on error
AX = error code (see INT 61"PC/TCP")
SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=1Ah,INT 61/AH=1Dh
----------611C-------------------------------
INT 61 u - PC/TCP kernel v2.05 - "net_readfrom" - ???
AH = 1Ch
BX = connection handle???
CX = ???
DX = ???
DS:SI -> ???
ES:DI -> ???
Return: CF clear if successful
AX = ???
DX = ???
CF set on error
AX = error code (see INT 61"PC/TCP")
SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=1Ah,INT 61/AH=1Dh
----------611D-------------------------------
INT 61 u - PC/TCP kernel v2.05 - "net_writeto" - ???
AH = 1Dh
BX = connection handle???
CX = ???
DX = ???
DS:SI -> ???
ES:DI -> 9-byte buffer containing ???
Return: CF clear if successful
CX = ???
DX = ???
CF set on error
AX = error code (see INT 61"PC/TCP")
SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=1Bh,INT 61/AH=1Ch
----------611E-------------------------------
INT 61 u - PC/TCP kernel v2.05 - "net_flush" - ???
AH = 1Eh
BX = connection handle
Return: CF clear if successful
CF set on error
AX = error code (see INT 61"PC/TCP")
SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
----------611F-------------------------------
INT 61 u - PC/TCP kernel v2.05 - "net_asynch" - ???
AH = 1Fh
BX = connection handle???
CX = ???
DS:SI -> ???
ES:DI -> ???
Return: CF clear if successful
DS:DX -> ???
CF set on error
AX = error code (see INT 61"PC/TCP")
SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
----------6120-------------------------------
INT 61 u - PC/TCP kernel v2.05 - "set_option" - ???
AH = 20h
BX = connection handle???
CX = ???
DS:DX -> ???
SI = ???
DI = ???
Return: CF clear if successful
CF set on error
AX = error code (see INT 61"PC/TCP")
SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=21h
----------6121-------------------------------
INT 61 u - PC/TCP kernel v2.05 - "get_option" - ???
AH = 21h
BX = connection handle???
CX = ???
DS:DX -> ???
SI = ???
DI = ???
Return: CF clear if successful
DS:DX -> ???
CF set on error
AX = error code (see INT 61"PC/TCP")
SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=20h
----------6122-------------------------------
INT 61 u - PC/TCP kernel v2.05 - "net_getdesc" - ???
AH = 22h
BX = connection handle???
Return: CF clear if successful
AX = ???
CF set on error
AX = error code (see INT 61"PC/TCP")
SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
----------6123-------------------------------
INT 61 u - PC/TCP kernel v2.05 - "net_listen" - ???
AH = 23h
BX = connection handle??? or FFFFh
DX = subfunction???
DS:SI -> ???
Return: CF clear if successful
AX = ???
CF set on error
AX = error code (see INT 61"PC/TCP")
SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=13h
----------6124-------------------------------
INT 61 u - PC/TCP kernel v2.05 - "net_abortall" - ???
AH = 24h
Return: ???
SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
----------6125-------------------------------
INT 61 u - PC/TCP kernel v2.05 - "ad_res_name" - ???
AH = 25h
BX = ???
CX = ???
DX = ???
DS:SI -> ???
Return: CF clear if successful
CF set on error
AX = error code (see INT 61"PC/TCP")
SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
----------6126-------------------------------
INT 61 u - PC/TCP kernel v2.05 - "ad_htable" - ???
AH = 26h
BX = ???
CX = ???
DX = ???
DS:SI -> ???
Return: CF clear if successful
CF set on error
AX = error code (see INT 61"PC/TCP")
SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
----------6127-------------------------------
INT 61 u - PC/TCP kernel v2.05 - "ad_domain" - ???
AH = 27h
BX = ???
CX = ???
DX = ???
DS:SI -> ???
Return: CF clear if successful
CF set on error
AX = error code (see INT 61"PC/TCP")
SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
----------6128-------------------------------
INT 61 u - PC/TCP kernel v2.05 - "net_swap" - ???
AH = 28h
BX = connection handle???
CX = ???
Return: CF clear if successful
???
CF set on error
AX = error code (see INT 61"PC/TCP")
SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
----------6129-------------------------------
INT 61 u - PC/TCP kernel v2.05 - "net_getglobdesc" - OPEN CONNECTION???
AH = 29h
Return: CF clear if successful
AX = connection handle???
CF set on error
AX = error code (see INT 61"PC/TCP")
SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
----------612A-------------------------------
INT 61 U - PC/TCP kernel v2.05 - GET CONFIGURATION INFORMATION
AH = 2Ah
DS:SI -> 26-byte buffer for configuration information (see below)
Return: CF clear
AX = 0000h
buffer filled
SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
Format of configuration information:
Offset Size Description
00h BYTE maximum TCP connections available
01h BYTE maximum UDP connections available
02h BYTE maximum IP connections available
03h BYTE ???
04h BYTE number of TCP connections currently in use
05h BYTE number of UDP connections currently in use
06h BYTE number of IP connections currently in use
07h BYTE ???
08h WORD number of local network descriptors active
0Ah WORD number of global network descriptors active
0Ch BYTE ???
0Dh BYTE ???
0Eh WORD ???
10h WORD ???
12h DWORD ???
16h DWORD IP broadcast address
----------612B-------------------------------
INT 61 U - PC/TCP kernel v2.05 - ???
AH = 2Bh
BX = connection handle???
CX = ???
DX = ???
DS:SI -> ???
ES:DI -> ???
Return: CF clear if successful
CF set on error
AX = error code (see INT 61"PC/TCP")
SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
----------6130-------------------------------
INT 61 u - PC/TCP kernel v2.05 - "icmp_ping" ???
AH = 30h
BX = ???
CX = ???
DX = ???
Return: CF clear if successful
CF set on error
AX = error code (see INT 61"PC/TCP")
SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
----------61---------------------------------
INT 61 u - PC/TCP kernel v2.05 - NOP for SLIP kernel
AH = function
31h "net_add_route"
32h "net_del_route"
33h "net_dump_routes"
----------6134-------------------------------
INT 61 u - PC/TCP kernel v2.1 - "icmp_destun" - ???
AH = 34h
???
Return: ???
----------6150-------------------------------
INT 61 u - PC/TCP kernel v2.05 - "nm_prs_addr" - ???
AH = 50h
DS:DX -> 127-byte buffer containing ???
Return: CF clear if successful
DX:AX -> ???
CF set on error
AX = error code (see INT 61"PC/TCP")
SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
----------6151-------------------------------
INT 61 u - PC/TCP kernel v2.05 - "nm_htable" - ???
AH = 51h
CX = size of destination buffer
DS:DX -> 127-byte buffer containing ???
ES:DI -> destination buffer or 0000h:0000h
Return: CF clear if successful
DX:AX -> ???
CF set on error
AX = error code (see INT 61"PC/TCP")
SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
----------6152-------------------------------
INT 61 u - PC/TCP kernel v2.05 - "nm_domain" - ???
AH = 52h
CX = size of destination buffer
DS:DX -> 127-byte buffer containing ???
ES:DI -> destination buffer or 0000h:0000h
Return: CF clear if successful
DX:AX -> ???
CF set on error
AX = error code (see INT 61"PC/TCP")
SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
----------6153-------------------------------
INT 61 u - PC/TCP kernel v2.05 - "nm_ien116" - ???
AH = 53h
DS:DX -> 127-byte buffer containing ???
Return: CF clear if successful
DX:AX -> ???
CF set on error
AX = error code (see INT 61"PC/TCP")
SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
----------6154-------------------------------
INT 61 u - PC/TCP kernel v2.05 - "nm_res_name" - RESOLVE HOST NAME
AH = 54h
CX = size of destination buffer
DS:DX -> 127-byte buffer containing host name???
ES:DI -> destination buffer or 0000h:0000h
Return: CF clear if successful
DX:AX -> ???
CF set on error
AX = error code (see INT 61"PC/TCP")
BUG: the SLIP kernel for v2.05 bounds-checks the wrong register, so values
greater than 54h in AH may crash the system. Other kernels may have
this bug as well.
SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
----------62---------------------------------
INT 62 - reserved for user interrupt
----------62---------------------------------
INT 62 - Adaptec and OMTI controllers - DRIVE 0 DATA
Notes: this vector stores the third four bytes of the parameter table for
hard disk 0
SeeAlso: INT 60"Adaptec",INT 61"Adaptec",INT 63"Adaptec"
----------62---------------------------------
INT 62 - HP 95LX - USED BY CALCULATOR
SeeAlso: INT 60"HP 95LX"
----------62---------------------------------
INT 62 - MS SQL Server/Sybase DBLIBRARY interface - ???
AH = function (00h to 07h)
CX = FFFEh
DX = FFFFh
???
Return: ???
Note: the installation check consists of testing for the string "DBLIBRARY"
2 bytes past the interrupt handler
SeeAlso: AH=08h"SQL"
----------620000-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_GETMODE" - GET CURRENT VIDEO MODE NUMBER
AX = 0000h
ES:BX -> ???
Return: AX = current video mode number
Notes: FGDRIVER is the external video driver for the shareware
Fastgraph/Light by Ted Gruber Software
the installation check consists of testing for the signature "FG" ten
bytes beyond the start of the interrupt handler
SeeAlso: AX=0001h,AX=0006h
----------620001-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_SETMODE" - SELECT VIDEO MODE AND INITIALIZE
AX = 0001h
BX = new video mode or FFFFh for current mode
ES:DX -> ???
Notes: video modes are the same as the BIOS video modes except for
0Bh Hercules graphics 720x348
0Ch Hercules graphics 320x200
15h VGA graphics 320x400x256
16h VGA graphics 320x240x256
17h VGA graphics 320x480x256
this call resets the active video page to page 0000h, the clipping
region to the entire screen, text rows to 25, etc.
SeeAlso: AX=0000h,AX=0002h,INT 10/AH=00h
----------620002-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_TESTMODE" - CHECK IF VIDEO MODE AVAILABLE
AX = 0002h
BX = desired video mode (00h-17h)
CX = required number of video pages (ignore memory size if <= 0)
Return: AX = status
0000h mode not available with requested number of pages
0001h mode is available
SeeAlso: AX=0001h,AX=0003h,AX=0004h,AX=0005h
----------620003-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_BESTMODE" - GET BEST VIDEO MODE GIVEN RESOLUTN
AX = 0003h
BX = horizontal resolution
CX = vertical resolution
DX = number of video pages required (both physical and virtual)
Return: AX = proposed video mode number or FFFFh if no matching video mode
SeeAlso: AX=0002h,AX=0004h
----------620004-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_AUTOMODE" - GET VIDEO MODE WITH MOST FEATURES
AX = 0004h
Return: AX = proposed video mode number
Note: FGDRIVER is the external video driver for the shareware
Fastgraph/Light by Ted Gruber Software
SeeAlso: AX=0002h,AX=0003h,AX=0005h
----------620005-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_EGACHECK" - GET INFO ABOUT ACTIVE EGA DISPLAY
AX = 0005h
Return: AX = number of 64K banks of video memory, or 0000h if no EGA or EGA
without an Enhanced Color Display
SeeAlso: AX=0002h,AX=0003h
----------620006-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_RESET" - ERASE SCREEN AND RESTORE SCREEN ATTR
AX = 0006h
Notes: this call is ignored in graphics modes
the screen attributes are only restored if ANSI.SYS is loaded
SeeAlso: AX=0000h
----------620007-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_CURSOR" - SPECIFY WHETHER TEXT CURSR IS VISIBLE
AX = 0007h
BX = new state (0000h invisible, 0001h visible)
Note: this call is ignored in text modes
----------620008-----------------------------
INT 62 - FGDRIVER v1.10 - UNUSED
AX = 0008h to 0009h
Return: AX = 0000h
----------62000A-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_GETMAXX" - GET MAXIMUM COLUMN IN SCREEN SPACE
AX = 000Ah
Return: AX = maximum X coordinate in screen space
(or character space if in text mode)
SeeAlso: AX=000Bh,AX=0045h
----------62000B-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_GETMAXY" - GET MAXIMUM ROW IN SCREEN SPACE
AX = 000Bh
Return: AX = maximum Y coordinate in screen space
(or character space if in text mode)
SeeAlso: AX=000Ah,AX=0045h
----------62000C-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_XALPHA" - CONVERT SCREEN COLUMN TO CHAR COLUMN
AX = 000Ch
BX = screen space column
Return: AX = character space column containing specified coordinate
SeeAlso: AX=000Dh,AX=000Eh
----------62000D-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_YALPHA" - CONVERT SCREEN ROW TO CHARACTER ROW
AX = 000Dh
BX = screen space row
Return: AX = character space row containing specified coordinate
SeeAlso: AX=000Ch,AX=000Fh
----------62000E-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_XCONVERT" - CONVERT CHAR COLUMN TO SCREEN COL
AX = 000Eh
BX = character space column
Return: AX = screen space column of leftmost pixel in specified character col
SeeAlso: AX=000Ch,AX=000Fh
----------62000F-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_YCONVERT" - CONVERT CHARACTER ROW TO SCREEN ROW
AX = 000Fh
BX = character space row
Return: AX = screen space row of topmost pixel in specified character row
SeeAlso: AX=000Dh,AX=000Eh
----------620010-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_GETLINES" - GET TEXT ROWS FOR CURR VIDEO MODE
AX = 0010h
Return: AX = number of text rows on screen in current video mode
SeeAlso: AX=0011h
----------620011-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_SETLINES" - SET TEXT ROWS ON SCREEN
AX = 0011h
BX = new screen size (25, 43, 50)
SeeAlso: AX=0010h
----------620012-----------------------------
INT 62 - FGDRIVER v1.10 - UNUSED
AX = 0012h to 0013h
Return: AX = 0000h
----------620014-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_DEFCOLOR" - ASSIGN COLOR VALUE TO COLOR INDEX
AX = 0014h
BX = color index (0000h-00FFh)
CX = new color value (0 to maximum color value for current video mode)
Note: this call is ignored in text modes and 256-color graphics modes
SeeAlso: AX=0015h,AX=0016h,AX=001Dh
----------620015-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_GETCOLOR" - GET CURRENT TEXT ATTRIBUTE
AX = 0015h
Return: AX = current text attribute or color index (graphics modes)
Note: FGDRIVER is the external video driver for the shareware
Fastgraph/Light by Ted Gruber Software
SeeAlso: AX=0019h,AX=001Ah
----------620016-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_GETINDEX" - GET COLOR VALUE FOR COLOR INDEX
AX = 0016h
BX = color index (0000h to 00FFh)
Return: AX = color value for specified color index
Note: this call returns the value passed to it in text and 256-color
graphics modes
SeeAlso: AX=0014h,AX=001Ch
----------620017-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_PALETTE" - SET PALETTE / SET VIDEO DAC REGISTER
AX = 0017h
---CGA 4-color graphics---
BX = CGA paletee number
CX = background color
---CGA 2-color graphics---
BX ignored
CX = foreground color
---16-color graphics---
BX = palette register number
CX = palette value
---256-color graphics---
BX = DAC register number
CX = DAC value
Notes: ignored in text modes and Hercules graphics modes
few EGA/VGA adapters correctly set the foreground color in CGA mode 6
SeeAlso: AX=0018h,AX=001Dh
----------620018-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_PALETTES" - SET ALL PALETTE REGISTERS
AX = 0018h
ES:BX -> array of 16 WORDs containing values for palette registers
(or first 16 DAC registers in 256-color modes)
Note: ignored in text modes, CGA and Hercules graphics modes
SeeAlso: AX=0017h
----------620019-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_SETATTR" - SET TEXT-MODE CHARACTER ATTRIBUTE
AX = 0019h
BX = foreground
CX = background
DX = blink (0000h nonblinking, 0001h blink)
Note: this call is ignored in graphics modes
SeeAlso: AX=0015h,AX=001Ah,AX=0037h
----------62001A-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_SETCOLOR" - SET CURRENT COLOR
AX = 001Ah
BX = new color index (or text attribute in text modes)
SeeAlso: AX=0015h,AX=0019h
----------62001B-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_SETRGB" - SET VIDEO DAC REGISTER CONTENTS
AX = 001Bh
BX = palette or DAC register number
CX = red color component
DX = green component
SI = blue component
Notes: the register number may be negative for Tandy, PCjr, and 200-line
EGA graphics modes to specify an intense color
this call has no effect in text, CGA graphics, and Hercules graphics
modes
SeeAlso: AX=001Ch,AX=00A5h
----------62001C-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_GETRGB" - GET VIDEO DAC REGISTER CONTENTS
AX = 001Ch
ES:BX -> variable pointer record (see below)
CX = DAC register number
Return: variables updated
Note: this call is ignored in text modes and CGA/EGA video modes (since
they do not use DAC registers)
SeeAlso: AX=001Bh,AX=001Dh,AX=00A4h
Format of variable pointer record:
Offset Size Description
00h WORD segment of WORD buffer for red component of DAC register
02h WORD offset of WORD buffer for red component
04h WORD segment of WORD buffer for green component of DAC register
06h WORD offset of WORD buffer for green component
08h WORD segment of WORD buffer for blue component of DAC register
0Ah WORD offset of WORD buffer for blue component
----------62001D-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_MAPRGB" - MAP COLOR COMPONENTS INTO PALETTE VAL
AX = 001Dh
BX = red component
CX = green component
DX = blue component
Return: AX = mode-specific palette value corresponding to specified components
Note: only meaningful in 16-color graphics modes
SeeAlso: AX=0015h,AX=0017h
----------62001E-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_ERASE" - CLEAR THE ACTIVE VIDEO PAGE
AX = 001Eh
Note: sets each pixel to 0 in graphics modes, each character cell to a blank
with a gray foreground attribute in text modes
----------62001F-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_POINT" - DISPLAY A PIXEL
AX = 001Fh
BX = column
CX = row
Note: this call is ignored in text modes
SeeAlso: AX=0020h
----------620020-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_GETPIXEL" - GET COLOR OF SPECIFIED PIXEL
AX = 0020h
BX = column in screen space
CX = row in screen space
Return: AX = color value of pixel (0 to num_colors-1)
0000h in text modes
SeeAlso: AX=001Fh
----------620021-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_GETXPOS" - GET GRAPHICS CURSOR COLUMN
AX = 0021h
Return: AX = screen space X coordinate of graphics cursor position
SeeAlso: AX=0022h,AX=0023h,AX=0024h
----------620022-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_GETXPOS" - GET GRAPHICS CURSOR ROW
AX = 0022h
Return: AX = screen space Y coordinate of graphics cursor position
SeeAlso: AX=0021h,AX=0023h,AX=0024h
----------620023-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_MOVE" - SET GRAPHICS CURSOR POSITION
AX = 0023h
BX = new column
CX = new row
Note: this call is ignored in text modes
SeeAlso: AX=0021h,AX=0022h,AX=0024h
----------620024-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_MOVEREL" - ADJUST GRAPHICS CURSOR POSITION
AX = 0024h
BX = column offset
CX = row offset
Note: this call is ignored in text modes
SeeAlso: AX=0021h,AX=0022h,AX=0023h
----------620025-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_DRAW" - DRAW SOLID LINE TO ABSOLUTE POSITION
AX = 0025h
BX = endpoint column
CX = endpoint row
Notes: this call is ignored in text modes
the starting point is the current graphics cursor position; the cursor
position is updated
SeeAlso: AX=0026h,AX=0027h
----------620026-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_DRAWREL" - DRAW SOLID LINE TO RELATIVE POSITION
AX = 0026h
BX = endpoint column offset
CX = endpoint row offset
Notes: this call is ignored in text modes
the starting point is the current graphics cursor position; the cursor
position is updated
SeeAlso: AX=0025h,AX=0028h
----------620027-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_DASH" - DRAW DASHED LINE TO ABSOLUTE POSITION
AX = 0027h
BX = endpoint column
CX = endpoint row
DX = dash pattern (set bits cause drawn pixels)
Notes: this call is ignored in text modes
the starting point is the current graphics cursor position; the cursor
position is updated
SeeAlso: AX=0025h,AX=0028h
----------620028-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_DASHREL" - DRAW DASHED LINE TO RELATVE POSITION
AX = 0028h
BX = endpoint column offset
CX = endpoint row offset
DX = dash pattern (set bits cause drawn pixels)
Notes: this call is ignored in text modes
the starting point is the current graphics cursor position; the cursor
position is updated
SeeAlso: AX=0026h,AX=0027h
----------620029-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_SETCLIP" - SET CLIPPING REGION
AX = 0029h
BX = left edge of clipping region
CX = right edge of clipping region
DX = top edge of clipping region
SI = bottom edge of clipping region
SeeAlso: AX=004Ah,AX=004Ch,AX=0052h,AX=0054h
----------62002A-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_RECT" - DRAW UNFILLED RECTANGLE IN SCREEN SPACE
AX = 002Ah
BX = left edge column
CX = right edge column
DX = top edge row
SI = bottom edge row
SeeAlso: AX=002Bh,AX=002Ch,AX=002Eh,AX=00A2h
----------62002B-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_CLPRECT" - DRAW FILLED RECTANGLE IN SCREEN SPCE
AX = 002Bh
BX = screen space column of left edge
CX = screen space column of right edge
DX = screen space row of top edge
SI = screen space row of bottom edge
Note: this call is ignored in text modes
SeeAlso: AX=002Ah,AX=002Ch,AX=00A2h
----------62002C-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_DRECT" - DRAW DITHERED RECTANGLE IN SCRN SPACE
AX = 002Ch
BX = screen space column of left edge
CX = screen space column of right edge
DX = screen space row of top edge
SI = screen space row of bottom edge
ES:DI -> dithering matrix (video-mode dependent)
Note: this call is ignored in text modes
SeeAlso: AX=002Bh,AX=00A2h
----------62002D-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_ELLIPSE" - DRAW UNFILLED ELLIPSE IN SCRN SPACE
AX = 002Dh
BX = horizontal semi-axis length in screen space units
CX = vertical semi-axis length in screen space units
Notes: this call is ignored in text modes
the ellipse is centered at the current graphics cursor position
SeeAlso: AX=002Ah,AX=002Eh,AX=00A2h
----------62002E-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_POLYGON" - DRAW AN UNFILLED POLYGON
AX = 002Eh
CX = number of vertices in polygon
ES:BX -> variable pointer record (see below)
SeeAlso: AX=002Dh,AX=0030h,AX=00A2h
Format of variable pointer record:
Offset Size Description
00h WORD segment of WORD array containing vertex columns
02h WORD offset of WORD array containing vertex columns
04h WORD segment of WORD array containing vertex rows
06h WORD offset of WORD array containing vertex rows
----------62002F-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_PAINT" - FLOOD CLOSED REGION WITH COLOR
AX = 002Fh
BX = column
CX = row
Notes: fills an arbitrary closed region around the specified point with the
current color; the screen edges are not considered region boundaries
ignored in text modes
----------620030-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_CIRCLE" - DRAW UNFILLED CIRCLE
AX = 0030h
BX = radius in horizontal screen space units (> 0)
Notes: the circle is drawn in screen space, centered at the current graphics
cursor position
this call is ignored in text modes
SeeAlso: AX=00A2h
----------620031-----------------------------
INT 62 - FGDRIVER v1.10 - UNUSED
AX = 0031h
Return: AX = 0000h
----------620032-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_TEXT" - DISPLAY STRING OF CHARACTERS
AX = 0032h
CX = length of string
ES:BX -> string
Notes: the string is displayed staring at the text cursor position using the
current text attribute (text modes) or color index (graphics modes)
the text cursor position is updated after this call
SeeAlso: AX=001Ah,AX=0033h,AX=0035h,AX=0036h
----------620033-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_LOCATE" - SET TEXT-MODE CURSOR POSITION
AX = 0033h
BX = row
CX = column
Note: there are only eight text cursors shared by successive groups of
eight video pages (pages 0, 8, 16, ... share one cursor, 1, 9, ...
share the second, etc)
SeeAlso: AX=0034h
----------620034-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_WHERE" - GET CURRENT CURSOR POSITION
AX = 0034h
ES:BX -> variable pointers (see below)
Return: indicated variables filled with cursor row and column for active
display
Note: FGDRIVER is the external video driver for the shareware
Fastgraph/Light by Ted Gruber Software
SeeAlso: AX=0033h
Format of variable pointers:
Offset Size Description
00h WORD segment of WORD buffer for cursor row
02h WORD offset of WORD buffer for cursor row
04h WORD segment WORD buffer for cursor column
06h WORD offset WORD buffer for cursor column
----------620035-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_CHGATTR" - APPLY CURRENT TEXT ATTRIB TO CHARS
AX = 0035h
BX = number of characters to recolor
Notes: this call is ignored in graphics modes
starting at the current text cursor position, the specified number of
characters have their attributes to the current text attribute
SeeAlso: AX=0036h
----------620036-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_CHGTEXT" - DISPLAY STRING AT CURSOR POSITION
AX = 0036h
CX = length of string
ES:BX -> string to be displayed
Return: text cursor updated
Note: this call is ignored in graphics modes
SeeAlso: AX=0032h,AX=0035h
----------620037-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_GETATTR" - GET CHARACTER ATTRIB FOR POSITION
AX = 0037h
BX = row
CX = column
Return: AX = character attribute at specified location on active video page
Note: this call is ignored in graphics modes
SeeAlso: AX=0019h,AX=0038h
----------620038-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_GETCHAR" - GET CHARACTER FOR SCREEN POSITION
AX = 0038h
BX = row
CX = column
Return: AX = character at specified location on active video page
Note: this call is ignored in graphics modes
SeeAlso: AX=0037h
----------620039-----------------------------
INT 62 - FGDRIVER v1.10 - UNUSED
AX = 0039h to 003Bh
Return: AX = 0000h
----------62003C-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_GETPAGE" - GET ACTIVE VIDEO PAGE NUMBER
AX = 003Ch
Return: AX = active video page (0000h-003Fh)
SeeAlso: AX=003Dh,AX=003Eh,AX=0040h
----------62003D-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_SETPAGE" - SET ACTIVE VIDEO PAGE
AX = 003Dh
BX = new video page (0000h to 003Fh)
Note: the specified page must be a physical or virtual page
SeeAlso: AX=0001h,AX=003Ch,AX=003Fh,AX=0041h
----------62003E-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_GETVPAGE" - GET VISIBLE VIDEO PAGE NUMBER
AX = 003Eh
Return: AX = visible video page (0000h-003Fh)
SeeAlso: AX=003Ch,AX=003Fh,AX=0040h
----------62003F-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_SETVPAGE" - SET VISIBLE VIDEO PAGE
AX = 003Fh
BX = new video page (0000h to 003Fh)
Note: the specified page must be a physical or virtual page
SeeAlso: AX=0001h,AX=003Dh,AX=003Eh,AX=0041h
----------620040-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_GETHPAGE" - GET CURRENT HIDDEN VIDEO PAGE NUM
AX = 0040h
Return: AX = current hidden video page number (0000h-003Fh)
SeeAlso: AX=003Ch,AX=003Eh,AX=0041h
----------620041-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_SETHPAGE" - SET HIDDEN VIDEO PAGE
AX = 0041h
BX = new hidden page (0000h to 003Fh)
Note: specified page must be a physical page or a virtual page
SeeAlso: AX=003Dh,AX=003Fh,AX=0040h
----------620042-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_ALLOCATE" - CREATE VIRTUAL VIDEO PAGE
AX = 0042h
BX = page number (0000h-003Fh)
Return: AX = status
0000h successful
0001h specified page is a physical or logical page
0007h virtual page created, but memory control blocks corrupted
0008h not enough memory
Notes: FGDRIVER is the external video driver for the shareware
Fastgraph/Light by Ted Gruber Software
the amount of memory required by the virtual video page depends on the
current video mode
SeeAlso: AX=0043h,AX=009Dh,AX=009Fh
----------620043-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_FREEPAGE" - FREE VIRTUAL OR LOGICAL VIDEO PAGE
AX = 0043h
BX = page number (0000h-003Fh)
Return: AX = status
0000h successful
0001h specified page is a physical page
0007h virtual page released, but memory control blocks corrupted
0009h attempt to free a page which was never created
SeeAlso: AX=0042h,AX=009Dh,AX=009Eh,AX=009Fh
----------620044-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_GETADDR" - GET SEGMENT OF ACTIVE VIDEO PAGE
AX = 0044h
Return: AX = segment of active video page
----------620045-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_RESIZE" - SET GRAPHICS MODE VIDEO PAGE SIZE
AX = 0045h
BX = new page width in pixels
CX = new page height in pixels
Notes: the visible page must be set to 0000h before making this call
mouse, joysticks, expanded memory, and extended memory must be
reinitialized after this call
SeeAlso: AX=000Ah,AX=000Bh,AX=0075h,AX=007Ah,AX=00A0h,AX=00A1h
----------620046-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_GETMAP" - STORE IMAGE AS MODE-INDEPENDNT BITMAP
AX = 0046h
ES:BX -> buffer for video mode-independent bitmap
CX = width of bitmap in bytes
DX = height of bitmap in pixel rows
Return: each bit in bitmap is set if corresponding pixel is of the current
color, cleared otherwise
Note: this call is ignored in text modes
SeeAlso: AX=0047h,AX=0048h
----------620047-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_DRAWMAP" - DISPLAY MODE-INDEPENDENT BIT MAP
AX = 0047h
ES:BX -> bitmap (each set bit is pixel drawn in current color)
CX = width of bitmap in bytes
DX = height of bitmap in pixel rows
SeeAlso: AX=0046h,AX=004Ah,AX=004Dh,AX=0052h
----------620048-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_GETIMAGE" - STORE IMAGE AS BITMAP
AX = 0048h
ES:BX -> buffer for video mode-specific bitmap
CX = width of bitmap in bytes
DX = height of bitmap in pixel rows
SeeAlso: AX=0046h,AX=0049h,AX=0062h
----------620049-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_DRWIMAGE" - DISPLAY BITMAPPED IMAGE
AX = 0049h
ES:BX -> video mode-specific bitmap
CX = width of bitmap in bytes
DX = height of bitmap in pixel rows
Note: the image will be drawn with its lower left corner at the current
cursor position (either text or graphics)
SeeAlso: AX=0048h,AX=004Ah,AX=0062h
----------62004A-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_CLPIMAGE" - DISPLAY CLIPPED IMAGE (BITMAP)
AX = 004Ah
ES:BX -> mode-specific bitmap
CX = width of bit map in bytes
DX = height of bit map in pixel rows
Notes: this call is ignored in text modes
the image is drawn with its lower left corner at the current graphics
cursor position
the current clipping region is used, extended to a byte boundary
SeeAlso: AX=0029h,AX=0047h,AX=0049h,AX=004Ch,AX=0052h
----------62004B-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_REVIMAGE" - DISPLAY REVERSED IMAGE (BITMAP)
AX = 004Bh
ES:BX -> mode-specific bitmap
CX = width of bitmap in bytes
DX = height of bitmap in pixel rows
Notes: this call is ignored in text modes
the image is drawn with its lower left corner at the current graphics
cursor position
SeeAlso: AX=004Ah,AX=004Ch
----------62004C-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_FLPIMAGE" - DISPLAY INV CLIPPED IMAGE (BITMAP)
AX = 004Ch
ES:BX -> mode-specific bitmap
CX = width of bit map in bytes
DX = height of bit map in pixel rows
Notes: this call is ignored in text modes
the image is drawn with its lower left corner at the current graphics
cursor position
the current clipping region is used, extended to a byte boundary
SeeAlso: AX=0029h,AX=004Ah
----------62004D-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_DISPLAY" - DISPLAY IMAGE (STD PIXEL RUN FORMAT)
AX = 004Dh
ES:BX -> pixel run map (pairs of bytes: color index, count)
CX = number of pixel runs to display
DX = width of image in pixels (> 0)
Notes: this call is ignored in text modes
the image is displayed with its lower left corner at the current
graphics cursor position
SeeAlso: AX=0047h,AX=004Eh,AX=004Fh,AX=0050h,AX=0060h
----------62004E-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_DISPLAY" - DISPLAY IMAGE (PACKED PIXEL RUN FMT)
AX = 004Eh
ES:BX -> pixel run map (trios of bytes: colors, count1, count2; colors
contains the color for the first run in its high nybble and the
color for the second run in its low nybble)
CX = number of pixel runs to display
DX = width of image in pixels (> 0)
Notes: this call is ignored in text modes
the image is displayed with its lower left corner at the current
graphics cursor position
SeeAlso: AX=004Dh,AX=004Fh,AX=0050h,AX=0060h
----------62004F-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_DISPFILE" - DISPLAY STORED IMAGE
AX = 004Fh
ES:BX -> ASCIZ filename
CX = image width in pixels (> 0)
DX = image format
0000h Fastgraph standard pixel run format
0001h packed pixel run format
Notes: this call is ignored in text modes
the image is displayed with its lower left corner at the current
graphics cursor position
SeeAlso: AX=004Dh,AX=004Eh,AX=0050h,AX=0060h
----------620050-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_PATTERN" - SPECIFY DISPLAY PATTERN FOR COLOR
AX = 0050h
BX = index of pattern to define
CX = number of predefined display pattern
Notes: when displaying a pixel run map, Fastgraph uses the pattern associated
with each color index rather than displaying the actual color
this call has no effect in text and 256-color graphics modes
SeeAlso: AX=004Dh,AX=004Eh,AX=004Fh
----------620051-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_DRAWMASK" - DISPLAY IMAGE (MASKING MAP)
AX = 0051h
ES:BX -> array containing image stores as a masking map (see below)
CX = number of pixel runs in masking map
DX = width of masking map in pixels
Notes: this call is ignored in text modes and in native EGA and VGA graphics
modes
the image is drawn with its lower left corner at the current graphics
cursor position
SeeAlso: AX=0052h
Format of masking map:
Offset Size Description
00h BYTE length of first "protect" run (pixels remain unchanged)
01h BYTE length of first "zero" run (pixels set to background color)
02h BYTE length of second "protect" run
03h BYTE length of second "zero" run
...
----------620052-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_CLIPMASK" - DISPLAY CLIPPED IMAGE (MASKING MAP)
AX = 0052h
ES:BX -> array containing image stored as a masking map (see AX=0051h)
CX = number of pixel runs in masking map
DX = width of masking map in pixels
Notes: this call is ignored in text modes and in native EGA and VGA graphics
modes
the image is drawn with its lower left corner at the current graphics
cursor position
SeeAlso: AX=0029h,AX=004Ah,AX=0051h,AX=0053h,AX=0054h
----------620053-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_REVMASK" - DISPLAY REVERSED IMAGE (MASKING MAP)
AX = 0053h
ES:BX -> array containing image stored as a masking map (see AX=0051h)
CX = number of pixel runs in masking map
DX = width of masking map in pixels
Notes: this call is ignored in text modes and in native EGA and VGA graphics
modes
the image is drawn with its lower left corner at the current graphics
cursor position
SeeAlso: AX=0052h,AX=0054h
----------620054-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_FLIPMASK" - DISPLAY INV CLIPPED IMAGE (MASKMAP)
AX = 0054h
ES:BX -> array containing image stored as a masking map (see AX=0051h)
CX = number of pixel runs in masking map
DX = width of masking map in pixels
Notes: this call is ignored in text modes and in native EGA and VGA graphics
modes
the image is drawn with its lower left corner at the current graphics
cursor position
SeeAlso: AX=0029h,AX=0052h,AX=0053h
----------620055-----------------------------
INT 62 - FGDRIVER v1.10 - UNUSED
AX = 0055h to 0059h
Return: AX = 0000h
----------62005A-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_SAVE" - COPY REGION FROM VISIBLE TO HIDDEN PAGE
AX = 005Ah
BX = left edge column
CX = right edge column
DX = top edge row
SI = bottom edge row
Note: left and right edges are adjusted to byte boundaries if necessary
SeeAlso: AX=005Bh
----------62005B-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_RESTORE" - COPY REGION FROM HIDDEN TO VIS PAGE
AX = 005Bh
BX = left edge column
CX = right edge column
DX = top edge row
SI = bottom edge row
Note: left and right edges are adjusted to byte boundaries if necessary
SeeAlso: AX=005Ah,AX=0064h
----------62005C-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_TRANSFER" - COPY REGION
AX = 005Ch
CX = source video page
DX = destination video page
ES:BX -> copy record (see below)
Note: source and destination regions must not overlap if on the same page
SeeAlso: AX=005Dh,AX=005Fh
Format of copy record:
Offset Size Description
00h WORD left edge column of source region
02h WORD right edge column of source region
04h WORD top edge row of source region
06h WORD bottom edge row of source region
08h WORD left edge of destination
0Ah WORD bottom edge of destination
----------62005D-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_TCXFER" - COPY REGION EXCLUDING TRANSPARENT
AX = 005Dh
CX = source video page
DX = destination video page
ES:BX -> copy record (see AX=005Ch)
Notes: pixels which are in any of the colors defined as transparent with
AX=005Eh are left unchanged in the destination region
source and destination regions must not overlap if on the same page
this call is ignored in text modes
SeeAlso: AX=005Ch,AX=005Eh
----------62005E-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_TCMASK" - SET TRANSPARENT COLORS
AX = 005Eh
BX = colors to consider transparent (bit 0 = color 0, etc)
Notes: this call is ignored in text modes
the specified colors are considered transparent by AX=005Dh
SeeAlso: AX=005Dh
----------62005F-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_COPYPAGE" - TRANSFER VIDEO PAGE CONTENTS
AX = 005Fh
BX = source page number (0000h-003Fh)
CX = destination page number (0000h-003Fh)
Note: if both source and destination pages are logical pages, they must both
be located in the same type (conventional, EMS, XMS) of memory
SeeAlso: AX=005Ch,AX=009Dh,AX=009Eh,AX=009Fh
----------620060-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_DISPPCX" - DISPLAY PCX FILE
AX = 0060h
ES:BX -> ASCIZ filename
CX = flags
bit 0: use current palette rather than PCX file's palette
bits 1-15: reserved (0)
Return: AX = status
0000h success
0001h file not found
0002h file is not a valid PCX file
Notes: this call is ignored in text modes and Hercules low-resolution graphics
the image is displayed with its upper left corner at the current
graphics cursor position
SeeAlso: AX=004Dh,AX=004Eh,AX=004Fh,AX=0061h
----------620061-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_MAKEPCX" - CREATE PCX FILE FROM SCREEN WINDOW
AX = 0061h
BX = left edge in screen space units
CX = right edge in screen space units
DX = top edge in screen space units
SI = bottom edge in screen space units
ES:DI -> ASCIZ filename of PCX file to create
Return: AX = status
0000h successful
0001h file not created
Notes: the PCX file is created from the specified region of the active video
page; the left and right edges are adjusted to a byte boundary if
necessary
if the specified file already exists, it is overwritten
this call is ignored in text and Hercules low-resolution graphics modes
SeeAlso: AX=0060h
----------620062-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_IMAGESIZ" - DETERMINE IMAGE STORAGE REQUIREMENT
AX = 0062h
BX = image width in pixels
CX = image height in pixels
Return: DX:AX = size in bytes of mode-specific bitmap for current video mode
SeeAlso: AX=0048h
----------620063-----------------------------
INT 62 - FGDRIVER v1.10 - UNUSED
AX = 0063h
Return: AX = 0000h
----------620064-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_FADEIN" - FADE IN HIDDEN PAGE
AX = 0064h
BX = delay (0000h = fastest possible fade-in)
Notes: the current hidden page is copied to the current visible page in small
random sections to produce a fade-in effect
this call is ignored in text modes
SeeAlso: AX=005Bh,AX=0065h
----------620065-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_FADEOUT" - FADE OUT TO CURRENT COLOR
AX = 0065h
BX = delay (0000h = fastest possible fade-out)
Notes: this call is ignored in text modes
the current visible page is filled with pixels of the current color in
small random sections to give a fade-out effect
SeeAlso: AX=0064h
----------620066-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_PAN" - SET SCREEN ORIGIN
AX = 0066h
BX = new column for screen origin
CX = new row for screen origin
SeeAlso: AX=0067h
----------620067-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_SCROLL" - VERTICALLY SCROLL SCREEN REGION
AX = 0067h
BX = left edge column
CX = right edge column
DX = top edge row
SI = bottom edge row
DI = number of pixels by which to scroll (positive scrolls up,
negative scrolls down)
ES = type of scroll
0000h circular (rows scrolled off are copied to vacated rows)
else vacated rows are filled with the current color
Notes: in graphics modes, the left and right edges are adjusted to byte
boundaries if necessary
circular scrolling uses part of the hidden page as a workspace
SeeAlso: AX=0066h
----------620068-----------------------------
INT 62 - FGDRIVER v1.10 - UNUSED
AX = 0068h to 006Ch
Return: AX = 0000h
----------62006D-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_WAITKEY" - FLUSH KEYBOARD BUFFER AND AWAIT KEY
AX = 006Dh
Return: after next key pressed
SeeAlso: AX=006Eh,AX=006Fh,AX=0096h
----------62006E-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_GETKEY" - GET NEXT KEYSTROKE
AX = 006Eh
ES:BX -> variable pointer record (see below)
Return: (after next keystroke if no typeahead) variables updated
SeeAlso: AX=006Dh,AX=006Fh,AX=0070h
Format of variable pointer record:
Offset Size Description
00h WORD segment of BYTE buffer for ASCII keycode
02h WORD offset of BYTE buffer for ASCII keycode
04h WORD segment of BYTE buffer for extended keycode
06h WORD offset of BYTE buffer for extended keycode
----------62006F-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_INTKEY" - GET KEYSTROKE, NO WAIT
AX = 006Fh
ES:BX -> variable pointer record (see below)
Return: variables updated
Note: if the keyboard buffer is empty, both the ASCII and extended keycodes
are set to 00h
SeeAlso: AX=006Dh,AX=006Eh,AX=0070h,AX=0079h
Format of variable pointer record:
Offset Size Description
00h WORD segment of BYTE buffer for ASCII keycode
02h WORD offset of BYTE buffer for ASCII keycode
04h WORD segment of BYTE buffer for extended keycode
06h WORD offset of BYTE buffer for extended keycode
----------620070-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_CAPSLOCK" - GET STATE OF CAPSLOCK KEY
AX = 0070h
Return: AX = CapsLock state (0000h off, 0001h on)
SeeAlso: AX=006Eh,AX=006Fh,AX=0071h,AX=0072h,AX=0074h
----------620071-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_SETCAPS" - SET STATE OF CAPSLOCK KEY
AX = 0071h
BX = new state (0000h off, 0001h on)
SeeAlso: AX=0070h,AX=0073h
----------620072-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_NUMLOCK" - GET STATE OF NUMLOCK KEY
AX = 0072h
Return: AX = NumLock state (0000h off, 0001h on)
SeeAlso: AX=0070h,AX=0074h
----------620073-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_SETNUM" - SET STATE OF NUMLOCK KEY
AX = 0073h
BX = new state (0000h off, 0001h on)
SeeAlso: AX=0071h,AX=0072h
----------620074-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_SCRLOCK" - GET STATE OF SCROLL LOCK KEY
AX = 0074h
Return: AX = ScrollLock state (0000h off, 0001h on)
SeeAlso: AX=0070h,AX=0072h
----------620075-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_INITJOY" - INITIALIZE JOYSTICK USE
AX = 0075h
BX = joystick number (0001h or 0002h)
Return: AX = status
0000h successful
FFFFh joystick not connected or no game port
Note: Fastgraph assumes that the requested joystick is centered at the time
this function is called
SeeAlso: AX=0076h,AX=0077h,AX=0078h,AX=0079h
----------620076-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_GETXJOY" - GET HORIZONTAL POSITION OF JOYSTICK
AX = 0076h
BX = joystick number (0001h or 0002h)
Return: AX = horizontal position of joystick
FFFFh if joystick uninitialized or not present
Notes: the actual coordinates are processor- and joystick-dependent
you must call AX=0075h before this function
SeeAlso: AX=0075h,AX=0077h,AX=0078h
----------620077-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_GETYJOY" - GET VERTICAL POSITION OF JOYSTICK
AX = 0077h
BX = joystick number (0001h or 0002h)
Return: AX = vertical position of joystick
FFFFh if joystick uninitialized or not present
Notes: the actual coordinates are processor- and joystick-dependent
you must call AX=0075h before this function
SeeAlso: AX=0075h,AX=0076h,AX=0078h
----------620078-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_BUTTON" - GET JOYSTICK BUTTON STATE
AX = 0078h
BX = joystick number (0001h or 0002h)
Return: AX = button states
bit 0: top button pressed
bit 1: bottom button pressed
SeeAlso: AX=0075h,AX=0076h,AX=0077h,AX=0079h
----------620079-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_INTJOY" - GET KEYCODES CORRESP TO JOYSTICK POS
AX = 0079h
CX = joystick number (0001h or 0002h)
ES:BX -> variable pointer record (see below)
Notes: if the indicated joystick has not been initialized with AX=0075h, both
the button code and joystick position will be set to 00h
if either button is pressed, a button code of 0Dh is returned;
otherwise, a button code of 00h is returned
SeeAlso: AX=006Fh,AX=0075h,AX=0078h
Format of variable pointer record:
Offset Size Description
00h WORD segment of BYTE buffer for button code
02h WORD offset of BYTE buffer for button code
04h WORD segment of BYTE buffer for joystick position
06h WORD offset of BYTE buffer for joystick position
----------62007A-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_MOUSEINI" - INITIALIZE MOUSE SUPPORT
AX = 007Ah
Return: AX = status
0002h two-button mouse
0003h three-button mouse
FFFFh initialization failed
Note: after this call, the mouse cursor is invisible
SeeAlso: AX=007Bh,AX=007Ch,AX=007Eh,AX=0080h,INT 33/AX=0000h
----------62007B-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_MOUSEVIS" - SET MOUSE CURSOR VISIBILITY
AX = 007Bh
BX = new state (0000h invisible, 0001h visible)
SeeAlso: AX=007Ah,AX=007Eh,INT 33/AX=0001h,INT 33/AX=0002h
----------62007C-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_MOUSEBUT" - GET MOUSE BUTTON PRESS/RELEASE CNTS
AX = 007Ch
CX = mouse button (1 = left press, 2 = right press, 3 = middle press,
-1=left release, -2=right release, -3=middle release)
ES:BX -> variable pointer record (see below)
Return: variables updated
Note: returns the count of presses or releases since the last call to this
function; if the count is zero, row and col will also be zero
SeeAlso: AX=007Ah,INT 33/AX=0005h,INT 33/AX=0006h
Format of variable pointer record:
Offset Size Description
00h WORD segment of WORD buffer for press/release count
02h WORD offset of WORD buffer for press/release count
04h WORD segment of WORD buffer for screen space col of last press/rls
06h WORD offset of WORD buffer for screen space col of last press/rels
08h WORD segment of WORD buffer for screen space row of last press/rls
0Ah WORD offset of WORD buffer for screen space row of last press/rls
----------62007D-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_MOUSEPOS" - GET CURRENT MOUSE POSITION
AX = 007Dh
ES:BX -> variable pointer record (see below)
SeeAlso: AX=007Ah,AX=0081h
Format of variable pointer record:
Offset Size Description
00h WORD segment of WORD buffer for mouse column
02h WORD offset of WORD buffer for mouse column
04h WORD segment of WORD buffer for mouse row
06h WORD offset of WORD buffer for mouse row
08h WORD segment of WORD buffer for button status
0Ah WORD offset of WORD buffer for button status
Note: button status: bit 0 = left button, bit 1 = right, bit 2 = middle
----------62007E-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_MOUSECUR" - SPECIFY TEXT-MODE MOUSE CURSOR
AX = 007Eh
BX = screen mask
CX = cursor mask
Note: this call is ignored in graphics modes
SeeAlso: AX=007Ah,AX=007Fh,INT 33/AX=000Ah
----------62007F-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_MOUSEPTR" - SPECIFY GRAPH-MODE MOUSE CURSOR
AX = 007Fh
ES:BX -> masks (16-byte screen mask followed by 16-byte cursor mask)
CX = X offset of hot spot from upper left corner
DX = Y offset of hot spot from upper left corner
Note: this call is ignored in text modes
SeeAlso: AX=007Ah,AX=007Eh,INT 33/AX=0009h
----------620080-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_MOUSELIM" - SPECIFY MOUSE CURSOR LIMITS
AX = 0080h
BX = left-most position allowed for mouse cursor
CX = right-most position allowed
DX = top-most position allowed
SI = bottom-most position allowed
SeeAlso: AX=007Ah,AX=0081h,INT 33/AX=0007h,INT 33/AX=0008h
----------620081-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_MOUSEMOV" - SET MOUSE CURSOR POSITION
AX = 0081h
BX = new column
CX = new row
Note: will not move the mouse cursor outside the bounding box specified with
AX=0080h
SeeAlso: AX=007Ah,AX=007Dh,AX=0080h,INT 33/AX=0004h
----------620082-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_MOUSESPD" - SET MOUSE CURSOR SPEED
AX = 0082h
BX = horizontal mickeys per eight pixels of movement (default 16)
CX = vertical mickeys per eight pixels of movement (default 16)
SeeAlso: INT 33/AX=000Fh,INT 33/AX=001Ah
----------620083-----------------------------
INT 62 - FGDRIVER v1.10 - UNUSED
AX = 0083h to 0087h
Return: AX = 0000h
----------620088-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_SOUND" - MAKE SOUND FOR SPECIFIED DURATION
AX = 0088h
BX = frequency in Hertz (18-32767)
CX = duration in clock ticks (0000h or negative for continuous sound)
Note: ignored if asynchronous sound (AX=0089h,AX=008Bh,AX=008Dh) is in
progress
SeeAlso: AX=0089h,AX=008Ah,AX=008Eh,AX=0090h
----------620089-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_SOUNDS" - PLAY SOUNDS IN BACKGROUND
AX = 0089h
CX = number of times to cycle through sound list
ES:BX -> sounds array (see below)
Note: ignored if asynchronous sound (AX=0089h,AX=008Bh,AX=008Dh) is in
progress
SeeAlso: AX=0088h,AX=008Eh,AX=008Fh
Format of sounds array element:
Offset Size Description
00h WORD frequency of sound in Hertz (0000h ends array)
02h WORD duration of sound in clock ticks
----------62008A-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_VOICE" - START SOUND
AX = 008Ah
BX = channel on TI sound chip
1-3 = channels 1-3, 4 = channel 4 with periodic noise,
5 = channel 4 with white noise
CX = frequency in Hz (18-32767 for channels 1-3; 0=512 Hz, 1=1024 Hz,
2=2048 Hz for channels 4 and 5)
DX = volume
SI = duration in clock ticks (continuous if <= 0)
Notes: FGDRIVER is the external video driver for the shareware
Fastgraph/Light by Ted Gruber Software
only available on PCjr and Tandy 1000
SeeAlso: AX=0088h,AX=008Bh,AX=008Ch
----------62008B-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_VOICES" - PLAY SOUNDS IN BACKGROUND
AX = 008Bh
ES:BX -> tone array (see below)
CX = number of times to repeat tone array
Notes: FGDRIVER is the external video driver for the shareware
Fastgraph/Light by Ted Gruber Software
only available on PCjr and Tandy 1000
SeeAlso: AX=008Ah,AX=008Dh,AX=008Eh,AX=008Fh,AX=0091h
Format of tone array element:
Offset Size Description
00h WORD channel number (0000h terminates array)
02h WORD frequency
04h WORD volume
06h WORD duration in 1/72.8 seconds
----------62008C-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_MUSIC" - PLAY SERIES OF NOTES
AX = 008Ch
ES:BX -> '$'-terminated music string in BASIC PLAY format
Return: after music completed
Note: ignored if asynchronous sound (AX=0089h,AX=008Bh,AX=008Dh) is in
progress
SeeAlso: AX=008Ah,AX=008Dh
----------62008D-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_MUSICB" - PLAY SERIES OF NOTES IN BACKGROUND
AX = 008Dh
CX = number of repetitions (negative = continuous play)
ES:BX -> '$'-terminated music string in BASIC PLAY format
Note: ignored if asynchronous sound (AX=0089h,AX=008Bh,AX=008Dh) is in
progress
SeeAlso: AX=008Bh,AX=008Ch,AX=008Eh,AX=008Fh,AX=0091h
----------62008E-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_HUSH" - STOP ASYNCHRONOUS SOUND IMMEDIATELY
AX = 008Eh
Note: immediately stops any sounds started with "FG_MUSICB", "FG_SOUNDS",
or AX=008Bh; ignored if no asynchronous sound is playing
SeeAlso: AX=0088h,AX=008Bh,AX=008Fh,AX=0090h,AX=0091h
----------62008F-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_HUSHNEXT" - STOP ASYNCHRONOUS SOUND
AX = 008Fh
Note: stops any sounds started with "FG_MUSICB", "FG_SOUNDS", or AX=008Bh
after the current repetition completes; ignored unless asynchronous
sound is continuous
SeeAlso: AX=008Bh,AX=008Eh,AX=0090h
----------620090-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_QUIET" - STOP CONTINUOUS SYNCHRONOUS SOUND
AX = 0090h
Note: this call has no effect if there is no continuous sound playing
SeeAlso: AX=008Eh,AX=008Fh,AX=0091h
----------620091-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_PLAYING" - DETERMINE WHETHER ASYNC SOUND ACTIVE
AX = 0091h
Return: AX = sound state (0 = no asynchronous sound, 1 = async sound playing)
SeeAlso: AX=008Bh,AX=008Dh,AX=0090h
----------620092-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_RESUME" - RESTART ASYNCHRONOUS SOUND
AX = 0092h
SeeAlso: AX=008Eh,AX=008Fh,AX=0090h
----------620093-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_SUSPEND" - TEMPORARILY STOP ASYNCHRONOUS SOUND
AX = 0093h
Notes: this call has no effect if there is no asynchronous sound in progress
the program must not exit while sound is suspended
SeeAlso: AX=0092h
----------620094-----------------------------
INT 62 - FGDRIVER v1.10 - UNUSED
AX = 0094h to 0095h
Return: AX = 0000h
----------620096-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_WAITFOR" - DELAY FOR SPECIFIED DURATION
AX = 0096h
BX = duration in clock ticks
Return: after delay elapses
SeeAlso: AX=006Dh,AX=0097h
----------620097-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_STALL" - PAUSE FOR SPECIFIED DURATION
AX = 0097h
BX = duration in processor-dependent delay units (see AX=0098h)
Return: after delay elapses
SeeAlso: AX=0096h,AX=0098h
----------620098-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_MEASURE" - GET DELAY UNITS PER CLOCK TICK
AX = 0098h
Return: AX = delay units per clock tick (processor-dependent)
Note: delay units are used by "FG_STALL" (AX=0097h)
SeeAlso: AX=0097h
----------620099-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_GETCLOCK" - GET CLOCK TICKS SINCE MIDNIGHT
AX = 0099h
Return: DX:AX = number of clock ticks since midnight
Note: FGDRIVER is the external video driver for the shareware
Fastgraph/Light by Ted Gruber Software
----------62009A-----------------------------
INT 62 - FGDRIVER v1.10 - UNUSED
AX = 009Ah
Return: AX = 0000h
----------62009B-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_MEMAVAIL" - QUERY AMOUNT OF FREE MEMORY
AX = 009Bh
Return: DX:AX = number of bytes of conventional memory available
SeeAlso: AX=009Dh
----------62009C-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_SETFUNC" - SET LOGICAL OPERATION FOR VIDEO OPS
AX = 009Ch
BX = operation
0000h replacement
0001h AND
0002h OR
0003h XOR
Note: only available in native EGA/VGA graphics mode (0Dh to 12h)
----------62009D-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_ALLOCCMS" - CREATE LOGICAL VIDEO PAGE (CONVMEM)
AX = 009Dh
BX = page number (0001h-003Fh)
Return: AX = status
0000h successful
FFFCh insufficient memory
FFFDh page already created, or exists as physical or virtual page
FFFEh invalid page number
Note: the only operation which is allowed on logical pages is AX=005Fh
SeeAlso: AX=0043h,AX=005Fh,AX=009Bh,AX=009Eh,AX=009Fh
----------62009E-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_ALLOCEMS" - CREATE LOGICAL VIDEO PAGE (EMS)
AX = 009Eh
BX = page number (0001h-003Fh)
Return: AX = status
0000h successful
FFFCh insufficient memory
FFFDh page already created, or exists as physical or virtual page
FFFEh invalid page number
FFFFh memory manager not initialized
Notes: must first call AX=00A0h
the only operation which is allowed on logical pages is AX=005Fh
SeeAlso: AX=0043h,AX=005Fh,AX=009Dh,AX=009Fh,AX=00A0h
----------62009F-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_ALLOCXMS" - CREATE LOGICAL VIDEO PAGE (XMS)
AX = 009Fh
BX = page number (0001h-003Fh)
Return: AX = status (see AX=009Eh)
Notes: must first call AX=00A1h
the only operation which is allowed on logical pages is AX=005Fh
SeeAlso: AX=0043h,AX=005Fh,AX=009Dh,AX=009Eh,AX=00A1h
----------6200A0-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_INITEMS" - INITIALIZE EXPANDED MEMORY USE
AX = 00A0h
Return: AX = status
0000h successful
FFFFh expanded memory manager inaccessible or not installed
SeeAlso: AX=009Eh,AX=00A1h
----------6200A1-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_INITXMS" - INITIALIZE EXTENDED MEMORY USE
AX = 00A1h
Return: AX = status
0000h successful
FFFFh extended memory manager inaccessible or not installed
SeeAlso: AX=009Fh,AX=00A0h
----------6200A2-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_BOX" - DRAW UNFILLED RECTANGLE
AX = 00A2h
BX = left column
CX = right column
DX = top row
SI = bottom row
Notes: FGDRIVER is the external video driver for the shareware
Fastgraph/Light by Ted Gruber Software
the rectangle is drawn in screen space, respecting the clipping region,
width edges of the width specified with AX=00A3h (default = 1 is set
by "FG_SETMODE")
this function has no effect in text modes
SeeAlso: AX=002Bh,AX=002Ch,AX=002Eh,AX=0030h,AX=00A3h
----------6200A3-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_BOXDEPTH" - SET RECTANGLE BORDER WIDTH
AX = 00A3h
BX = width of left and right edges in pixels (> 0)
CX = width of top and bottom edges in pixels (> 0)
SeeAlso: AX=00A2h
----------6200A4-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_GETDACS" - GET VIDEO DAC CONTENTS
AX = 00A4h
CX = number of DAC registers to return (0001h to 0100h)
DX = starting DAC register number (0000h to 00FFh)
ES:BX -> buffer for DAC red/green/blue triples
Note: the register number wraps back to zero after FFh
SeeAlso: AX=001Ch,AX=00A5h
----------6200A5-----------------------------
INT 62 u - FGDRIVER v1.10 - "FG_SETDACS" - SET VIDEO DAC CONTENTS
AX = 00A5h
CX = number of DAC registers to set (0001h to 0100h)
DX = starting DAC register number (0000h to 00FFh)
ES:BX -> buffer containing DAC red/green/blue triples
Notes: the register number wraps back to zero after FFh
this call has no effect in text modes or graphics modes below 11h
SeeAlso: AX=001Bh,AX=00A4h
----------6201-------------------------------
INT 62 - Cswitch - GIVE UP REST OF TIME-SLICE
AH = 01h
Note: Cswitch is a set of multitasking functions by Herb Rose
SeeAlso: AH=05h,AH=06h,INT 15/AX=1000h
----------6202-------------------------------
INT 62 - Cswitch - WAIT FOR SEMAPHORE
AH = 02h
DX = semaphore number (0-63)
Return: AX = FFFFh bad semaphore number
else success
SeeAlso: AH=03h,AH=04h
----------6203-------------------------------
INT 62 - Cswitch - CHECK SEMAPHORE
AH = 03h
DX = semaphore number (0-63)
Return: AX = FFFFh not owned
else owned
SeeAlso: AH=02h,AH=04h
----------6204-------------------------------
INT 62 - Cswitch - TRIGGER SEMAPHORE
AH = 04h
DX = semaphore number (0-63)
Return: AX = FFFFh bad semaphore number
else success
SeeAlso: AH=02h,AH=03h
----------6205-------------------------------
INT 62 - Cswitch - SLEEP
AH = 05h
BX = seconds to sleep
SeeAlso: AH=01h,AH=06h,AH=08h"Cswitch"
----------6206-------------------------------
INT 62 - Cswitch - SUSPEND
AH = 06h
SeeAlso: AH=05h,AH=08h"Cswitch"
----------6207-------------------------------
INT 62 - Cswitch - SPAWN
AH = 07h
ES:BX -> function address to start executing at
CX = priority (1-10)
Return: AX = FFFDh no free memory control blocks
= FFFEh no free task control blocks
= FFFFh not enough memory to create new task stack
= >0 the tcb number of the new task, indicating no error
SeeAlso: AH=0Fh,AH=10h
----------6208-------------------------------
INT 62 - Cswitch - WAKE UP TASK
AH = 08h
BX = tcb identifier
SeeAlso: AH=05h,AH=06h
----------6208--CXFFFE-----------------------
INT 62 - MS SQL Server/Sybase DBLIBRARY interface - UNINSTALL/GET PSP ADDR
AH = 08h
CX = FFFEh
DX = FFFFh
Return: AX = PSP address of resident DBLIBRARY
Note: this call does not free the memory allocated to the TSR; the calling
code must do the deallocation.
SeeAlso: INT 62"DBLIBRARY"
----------6209-------------------------------
INT 62 - Cswitch - SET PRIORITY
AH = 09h
BX = new base priority (1-10)
Note: the lower the priority is numerically, the more often the task will run
----------620A-------------------------------
INT 62 - Cswitch - TEST MESSAGE QUEUE
AH = 0Ah
DX = queue number (0-63)
Return: AX = FFFFh bad queue number
= 0000h nothing on queue
else number of bytes in first message in queue
SeeAlso: AH=0Bh,AH=0Ch
----------620B-------------------------------
INT 62 - Cswitch - SEND MESSAGE
AH = 0Bh
CX = number of bytes to write
DS:SI -> buffer
DX = queue number (0-63)
Return: AX = FFFEh triggered by something arriving, redo the call
= FFFFh bad queue number
= 0000h no message was on queue
else number of bytes in message
SeeAlso: AH=0Ah,AH=0Ch
----------620C-------------------------------
INT 62 - Cswitch - READ MESSAGE
AH = 0Ch
CX = number of bytes to read
DS:SI -> buffer
DX = queue number (0-63)
Return: AX = FFFFh bad queue number
else number of bytes transferred
SeeAlso: AH=0Ah,AH=0Bh
----------620D-------------------------------
INT 62 - Cswitch - DON'T ALLOW TASK TO BE SWAPPED OUT
AH = 0Dh
SeeAlso: AH=0Eh
----------620E-------------------------------
INT 62 - Cswitch - ALLOW TASK TO BE SWAPPED OUT
AH = 0Eh
SeeAlso: AH=0Dh
----------620F-------------------------------
INT 62 - Cswitch - LOAD AND RUN PROGRAM FROM DISK
AH = 0Fh
ES:BX -> command line
CX = priority (1-10)
DX = background flag
= != 0000h allows loading to EMS
Return: AX = 0000h task loader queue is full
= 0001h no error
SeeAlso: AH=07h,AH=10h,AH=13h
----------6210-------------------------------
INT 62 - Cswitch - TERMINATE SPAWNED PROGRAM
AH = 10h
SeeAlso: AH=07h,AH=0Fh
----------6211-------------------------------
INT 62 - Cswitch - GET TCB INFORMATION
AH = 11h
ES:BX -> a pointer which will be set to the tcb address
Return: AX = tcb indentifier
SeeAlso: AH=12h
----------6212-------------------------------
INT 62 - Cswitch - GET TCB ADDRESS
AH = 12h
ES:BX -> a pointer which will be set to the tcb table address
Return: AX = tcb indentifier
SeeAlso: AH=11h
----------6213-------------------------------
INT 62 - Cswitch - CHECK STATUS OF PREVIOUS LOAD_TASK
AH = 13h
Return: AX = FFFCh no Memory Control Blocks available
= FFFDh no TCBs available
= FFFEh insufficient memory
= FFFFh cannot open file
= 0000h load in progress (not done yet)
else tcb indentifier
SeeAlso: AH=0Fh
----------6247-------------------------------
INT 62 - PC Tools 7 COMMUTE - ???
AH = 47h
AL = subfunction (00h-31h)
???
CF set
Return: ???
----------6248-------------------------------
INT 62 - PC Tools 7 COMMUTE - ???
AH = 48h
AL = ???
???
CF set
Return: ???
----------6249-------------------------------
INT 62 - PC Tools 7 COMMUTE - ???
AH = 49h
???
CF set
Return: ???
Note: may be the same as AH=4Ch
----------624A-------------------------------
INT 62 - PC Tools 7 COMMUTE - ???
AH = 4Ah
AL = subfunction (00h-46h)
???
CF set
Return: ???
----------624B--BX1234-----------------------
INT 62 - PC Tools 7 COMMUTE - ???
AH = 4Bh
BX = 1234h
CX = 1234h
ES = ???
CF set
Return: ???
----------624C-------------------------------
INT 62 - PC Tools 7 COMMUTE - ???
AH = 4Ch
BL = subfunction
00h ???
02h ???
Return: CF clear if successful
CF set on error
----------626262-----------------------------
INT 62 - PC Tools 7 COMMUTE - INSTALLATION CHECK
AX = 6262h
CF set
Return: AX = 0000h
BX = segment of resident code's PSP
----------63---------------------------------
INT 63 - reserved for user interrupt
----------63---------------------------------
INT 63 - Adaptec and OMTI controllers - DRIVE 0 DATA
Notes: this vector stores the last four bytes of the parameter table for
hard disk 0
SeeAlso: INT 60"Adaptec",INT 61"Adaptec",INT 62"Adaptec",INT 64"Adaptec"
----------63---------------------------------
INT 63 - Oracle SQL Protected Mode Executive - ???
----------63---------------------------------
INT 63 - 4+Power FLOPPY CONTROLLER - ORIGINAL INT 13/40
the "4+Power" quad floppy controller BIOS hooks INT 13 (or INT 40 if INT 13
has been moved there) and places the old value here
----------63---------------------------------
INT 63 - Kofax KF9X00 image manipulation card interface
----------63---------------------------------
INT 63 - DESQview/X - SOCKET API
Notes: parameters are passed by patching!! data field immediately following
the entry point, as detailed below; the preferred method for calling
the socket API is via INT 15/AX=DE2Eh
the installation check consists of testing for the string "dvxunix"
(yes, lowercase) at offset 9 from the interrupt handler start
SeeAlso: INT 15/AX=DE2Eh,INT BE"DESQview"
Format of interrupt handler entry:
Offset Size Description
00h 3 BYTEs near jump or short jump + NOP to actual interrupt handler
03h WORD offset from following pointer for initial top of local stack
05h DWORD pointer to argument/stack block (see INT 15/AX=DE2Eh)
09h 7 BYTEs signature "dvxunix"
----------64---------------------------------
INT 64 - reserved for user interrupt
----------64---------------------------------
INT 64 - Adaptec controllers - DRIVE 1 DATA
Notes: this vector stores the first four bytes of the parameter table for
hard disk 1
these vectors are used by the following Adaptec controllers:
ACB 2370 A/B/C, ACB 2372 A/B/C, ACB 2333 A/B, 2322B-8, 2322B-16
these vectors are NOT used by the following Adaptec controllers:
ACB 2310, ACB 2312, ACB 2320D, ACB 2322D
SeeAlso: INT 60"Adaptec",INT 65"Adaptec",INT 66"Adaptec",INT 67"Adaptec"
----------64---------------------------------
INT 64 - Oracle SQL Protected Mode Executive - ???
----------64---------------------------------
INT 64 - Novell NetWare to v2.0a - LOW-LEVEL API
Note: equivalent to INT 7A for NetWare versions through 2.0a only; later
versions do not use this interrupt for IPX/SPX access, instead
getting an entry point from INT 2F/AX=7A00h
SeeAlso: INT 2F/AX=7A00h,INT 7A"Novell"
----------64---------------------------------
INT 64 - Data General DG10 - MicroECLIPSE COPROCESSOR INTERFACE
SeeAlso: INT 65"DG10",INT 66"DG10"
----------64---------------------------------
INT 64 - Extended Batch Language v3.14+
AH = function
00h to 5Fh chained to previous handler
60h to 6Ch reserved, return immediately
80h to FFh chained to previous handler
6Dh (v4.01+) insert tone in queue
AL = ???
CX = frequency in Hertz
DL = duration in clock ticks
Return: AL = 00h if note stored
= 01h if no room to store
6Eh clear ??? counter/flag
6Fh return counter/flag that AH=6Eh clears
70h ???
AL = ???
71h ???
AL = ???
72h ???
73h insert byte at end of keyboard buffer
AL = byte to insert
Return: AL = 00h if byte inserted
= 01h if no room to store
74h insert byte at front of keyboard buffer
AL = byte to insert
Return: AL = 00h if byte inserted
= 01h if no room to store
75h ???
76h get keyboard "stack" status
AL = 'K' if kbd read will read physical keyboard
'S' if it will read EBL internal keyboard buffer
AH = ???
77h clear internal keyboard buffer
78h ???
AL = ???
79h ???
7Ah ???
AL = ???
7Bh ???
AL = ???
7Ch ???
AL = ???
7Dh ???
AL = ???
7Eh clear buffer for ???
7Fh installation check
Return: CX = version in BCD
DI = segment of ???
BX = segment of next program's PSP???
Notes: Extended Batch Language is a batch-file enhancer by Seaware
the chaining does not check whether the interrupt had been hooked
before, so if you try to chain when the previous vector was
0000h:0000h, you'll be in trouble
functions 72h and 7Ah-7Dh appear to be interfaces to the optional
floating-point and extended function packages
----------64---------------------------------
INT 64 - Pdisk by Scott Garfinkle - Overwritten for Hard Drive information
Note: This vector is overwritten by Pdisk to install custom harddrive types.
It can either destroy 4 vectors and take no memory or TSR and take
up some memory.
SeeAlso: INT 65"Pdisk"
----------65---------------------------------
INT 65 - reserved for user interrupt
----------65---------------------------------
INT 65 - Adaptec controllers - DRIVE 1 DATA
Note: this vector stores the second four bytes of the parameter table for
hard disk 1
SeeAlso: INT 64"Adaptec",INT 66"Adaptec",INT 67"Adaptec"
----------65---------------------------------
INT 65 - Data General DG10 - MicroECLIPSE COPROCESSOR INTERFACE
SeeAlso: INT 64"DG10",INT 66"DG10"
----------65---------------------------------
INT 65 - FTP Software NDIS-Packet Driver adapter - POST PROCESSING INTERRUPT
----------65---------------------------------
INT 65 - SD.COM v6.2
The unregistered version of SD62.COM uses the low byte of this vector to
count the number of invocations, displaying a registration reminder each
time after the 20th use.
----------65---------------------------------
INT 65 - Pdisk by Scott Garfinkle - Overwritten for Hard Drive information
SeeAlso: INT 64"Pdisk",INT 66"Pdisk"
----------65---------------------------------
INT 65 - Ad Lib SOUND.COM - INTERFACE
SI = function number (see also entries below)
0000h Init
0002h RelTimeStart
0003h SetState
0004h GetState
0005h Flush
0006h SetMode
0007h GetMode
0008h SetRelVolume
0009h SetTempo
000Ah SetTranspose
000Bh GetTranspose
000Ch SetActVoice
000Dh GetActVoice
000Eh PlayNoteDel
000Fh PlayNote
0010h SetTimbre
0011h SetPitch
0012h SetTickBeat
0013h NoteOn
0014h NoteOff
0015h Timbre
0016h SetPitchBend
0017h WaveForm
ES:BX -> arguments
Note: the installation check consists of checking for the signature block
immediately preceding the interrupt handler (see below)
Format of signature block:
Offset Size Description
00h WORD version number
02h 19 BYTEs "SOUND-DRIVER-AD-LIB"
15h BYTE 01h
16h BYTE 01h
17h BYTE 00h
----------65----SI0000-----------------------
INT 65 - Ad Lib SOUND.COM - INITIALIZE (RESET)
SI = 0000h
----------65----SI0003-----------------------
INT 65 - Ad Lib SOUND.COM - SET STATE
SI = 0003h
ES:BX -> WORD state = 0000h disabled
= 0001h enabled
SeeAlso: SI=0004h
----------65----SI0004-----------------------
INT 65 - Ad Lib SOUND.COM - GET STATE
SI = 0004h
Return: AX = 0000h all done playing sounds
= else still playing sounds
SeeAlso: SI=0003h
----------65----SI0006-----------------------
INT 65 - Ad Lib SOUND.COM - SET MODE
SI = 0006h
ES:BX -> WORD mode = 0000h melodic
= 0001h percussive
SeeAlso: SI=0007h
----------65----SI0007-----------------------
INT 65 - Ad Lib SOUND.COM - GET MODE
SI = 0007h
Return: AX = 0000h melodic
= 0001h percussive
SeeAlso: SI=0006h
----------65----SI000C-----------------------
INT 65 - Ad Lib SOUND.COM - SET ACTIVE VOICE
SI = 000Ch
ES:BX -> WORD voice = 0000h to 0008h
SeeAlso: SI=000Dh
----------65----SI000D-----------------------
INT 65 - Ad Lib SOUND.COM - GET ACTIVE VOICE
SI = 000Dh
Return: AX = voice (0000h to 0008h)
SeeAlso: SI=000Ch
----------66---------------------------------
INT 66 - reserved for user interrupt
----------66---------------------------------
INT 66 - Adaptec controllers - DRIVE 1 DATA
Note: this vector stores the third four bytes of the parameter table for
hard disk 1
SeeAlso: INT 64"Adaptec",INT 65"Adaptec",INT 67"Adaptec"
----------66---------------------------------
INT 66 - Data General DG10 - MicroECLIPSE COPROCESSOR INTERFACE
SeeAlso: INT 64"DG10"
----------66---------------------------------
INT 66 C - Nanosoft, Inc. TurboNET - NETWORK PROCESSING ???
Notes: hooked but not used (IRET) by both redirector and server; called from
server's INT 28 handler
TurboNET is a NetBIOS-based file redirector and server
SeeAlso: INT 2F/AX=8100h
----------66---------------------------------
INT 66 - Pdisk by Scott Garfinkle - Overwritten for Hard Drive information
SeeAlso: INT 64"Pdisk",INT 67"Pdisk"
----------66---------------------------------
INT 66 - Microsoft Windows VITD.386 Virtual Interval Timer
Note: This Windows 3.x Virtual Device Driver implements a virtual timer
which will expire and call INT 66. This timer can be used to
calculate elapsed execution time etc.
----------6601-------------------------------
INT 66 - BitFax Scheduler - SET MODE???
AH = 01h
SeeAlso: AH=02h
----------6602-------------------------------
INT 66 - BitFax Scheduler - SET MODE???
AH = 02h
SeeAlso: AH=01h
----------6603-------------------------------
INT 66 - BitFax Scheduler - SCHEDULE FAX TRANSMISSIONS
AH = 03h
???
Return: ???
SeeAlso: AH=05h
----------6604-------------------------------
INT 66 - BitFax Scheduler - GET STATUS???
AH = 04h
Return: AX = ??? (0000h or 0001h)
DX = BitSched version??? (for versions >= 3.00)
9796h (ver. 3.00)
97E6h (ver. 3.02)
92D0h (ver. 3.04.06)
9510h (ver. 3.06.02)
SeeAlso: AH=06h,AX=3345h,INT 2F/AX=8000h"FaxBIOS"
----------6605-------------------------------
INT 66 - BitFax Scheduler - CONVERT FILE AND SEND FAX
AH = 05h
BX:CX -> command block (see below)
???
Return: ???
SeeAlso: AH=03h
Format of command block:
Offset Size Description
00h 18 BYTEs configuration bytes???
12h BYTEs ASCIZ temporary file name to place converted fax
52h BYTEs ASCIZ directory containing BitFax executables
92h BYTEs ASCIZ telephone number
C2h BYTE 00h don't send cover page
01h send cover page
C3h 15 BYTEs configuration bytes???
E2h BYTEs ASCIZ path of BITFAX.TRA file (containing additional
configuration information???)
122h BYTEs configuration bytes???
12Ch BYTE 00h don't send cover page
01h send cover page
12Dh 7 BYTEs configuration bytes???
134h BYTEs ASCIZ path of file to send
174h BYTEs more configuration bytes???
???
----------6606-------------------------------
INT 66 - BitFax Scheduler - SET MODE???
AH = 06h
Return: DX = BitSched version??? (same as AH=04h)
SeeAlso: AH=04h
----------660688-----------------------------
INT 66 - John W. Ratcliff (The IBM Digitized Sound Package)
AX = 0688h
???
Return: ???
SeeAlso: AX=0689h
----------660689-----------------------------
INT 66 - John W. Ratcliff (The IBM Digitized Sound Package)
AX = 0689h
???
Return: ???
SeeAlso: AX=0688h
----------663345-----------------------------
INT 66 - BitFax Scheduler - REMOVE TSR FROM MEMORY
AX = 3345h
Return: AX = FFFFh error removing TSR
Note: the installation check consists of checking for the signature
"BitFax Scheduler" beginning two bytes past the interrupt handler
SeeAlso: AH=04h,INT 2F/AH=2Ah,INT 2F/AX=CB00h
----------66FFFBBXFFFB-----------------------
INT 66 - MicroHelp Stay-Res Plus - ???
AX = FFFBh
BX = FFFBh
???
Return: ???
SeeAlso: AX=FFFEh,INT 2D"AMIS"
----------66FFFEBXFFFE-----------------------
INT 66 - MicroHelp Stay-Res/Stay-Res Plus - UNINSTALL
AX = FFFEh
BX = FFFEh
Return: only if unsuccessful
Notes: installation check is for the interrupt handler to begin with the bytes
FBh 9Ch or 9Ch FAh, and the program name (not case-sensitive) to
appear at offset 0005h (older versions) or the offset returned by
AX=FFFFh/BX=FFF0h in the interrupt handler segment.
Programs which use Stay-Res include ThesPlus (program name "THESPLUS")
and Personal Calendar (program name "CAL") by Paul Mun~oz-Colman.
SeeAlso: AX=FFFBh,AX=FFFFh,INT 2D"AMIS"
----------66FFFFBXFFF0-----------------------
INT 66 - MicroHelp Stay-Res Plus - FIND PROGRAM NAME
AX = FFFFh
BX = FFF0h
Return: DI = offset of program name in interrupt handler segment
SeeAlso: AX=FFFBh,AX=FFFEh,INT 2D"AMIS"
----------67---------------------------------
INT 67 - Adaptec controllers - DRIVE 1 DATA
Note: this vector stores the last four bytes of the parameter table for
hard disk 1
SeeAlso: INT 64"Adaptec",INT 65"Adaptec",INT 66"Adaptec"
----------67---------------------------------
INT 67 - Pdisk by Scott Garfinkle - Overwritten for Hard Drive information
SeeAlso: INT 64"Pdisk",INT 66"Pdisk"
----------67---------------------------------
INT 67 - Sangoma CCPOP 3270 resident module
SeeAlso: INT 61"Sangoma",INT 68"Sangoma"
----------67---------------------------------
INT 67 - CUCKOO.COM - INSTALLATION CHECK
Notes: this is not a vector; when loaded for the first time, CUCKOO.COM uses
the last unused (0000h:0000h) vector in the range 60h-67h to store
the signature value 434Ch:4F4Bh ('CLOK')
CUCKOO is a resident on-screen clock with optional hourly chime or
cuckoo by an unknown author with revisions by Thomas A. Lundin
----------6700-------------------------------
INT 67 - PC-NET, Alloy NTNX - LOCK SEMAPHORE AND WAIT
AH = 00h
DS:DX -> ASCIZ semaphore name (max 64 bytes)
Return: AL = status
00h successful
01h invalid function
02h semaphore already locked
03h unable to lock semaphore
04h semaphore space exhausted
AH = semaphore owner if status=02h
SeeAlso: AH=01h,AH=02h"PC-NET",INT 7F/AH=00h
----------6701-------------------------------
INT 67 - PC-NET, Alloy NTNX - LOCK SEMAPHORE
AH = 01h
DS:DX -> ASCIZ semaphore name (max 64 bytes)
Return: AL = status (see AH=00h)
AH = semaphore owner if status=02h
SeeAlso: AH=00h,AH=02h"PC-NET",INT 7F/AH=01h"Alloy"
----------6702-------------------------------
INT 67 - PC-NET, Alloy NTNX - UNLOCK SEMAPHORE
AH = 02h
DS:DX -> ASCIZ semaphore name (max 64 bytes)
Return: AL = status (see AH=00h)
AH = semaphore owner if status=02h
SeeAlso: AH=00h,AH=01h"PC-NET",INT 7F/AH=02h
----------673F--CX5145-----------------------
INT 67 U - QEMM-386 v4.23+ - INSTALLATION CHECK
AH = 3Fh
CX = 5145h ("QE")
DX = 4D4Dh ("MM")
Return: AH = 00h if installed
ES:DI -> QEMM API entry point
Notes: if no other program has hooked INT 67, an alternate installation
check is to test for the string
"QUARTERDECK EXPANDED MEMORY MANAGER 386" at offset 14h in the INT 67
handler's segment; the word at offset 12h contains the offset in
the handler's segment of the API entry point
MICEMM (Micronics Expanded Memory Manager) versions 2.0C and 4D support
the alternate QEMM installation check and entry point functions 00h,
02h, and 03h; version 4D only provides the signature string if the
commandline argument "DV" is provided
386MAX v6.01 responds to this call, but DESQview 2.42 does not
recognize the returned entry point as providing QEMM's capabilities
because a) only functions 0Ch (different from QEMM 0Ch) and
1000h-1009h are supported,
b) status is returned as for EMS functions, not QEMM funcs
c) the protected-mode entry point returned by function 1000h
only supports functions 0Ch, 1004h, 1005h, and 100Ah
the string check mentioned above is not supported by 386MAX
SeeAlso: AH=DDh,AX=5BF0h,AX=FFA5h,INT 15/AX=11DEh,INT 21/AX=4402h"QEMM"
SeeAlso: INT 21/AX=4402h"386MAX",INT 2F/AX=D201h/BX=5145h
Call QEMM entry point with:
AH = 00h get QEMM state
Return: CF clear
AL = QEMM state
bit 0 set if QEMM turned OFF
bit 1 set if in "Auto" mode
AH = 01h set QEMM state
AL = new state
bit 0 set: place QEMM in OFF state
Return: CF clear if successful
CF set on error
AH = 02h get ???
Return: CF clear
AX = segment of ??? data structure
Data Structure
Offset Size Description
00h DWORD page table entry for ???
???
AH = 03h get QEMM version
Return: CF clear
AX = BX = version in BCD
Notes: the official docs only state that the version is
returned in BX
MICEMM returns AX=0001h, BX unchanged
AH = 04h allocate 4K page and set AUTO/ON mode
Return: CF clear if successful
DX = page number of a 4K page
CF set if unable to allocate page
Note: QEMM mode unchanged if not AUTO/OFF
AH = 05h free 4K page and turn QEMM off
DX = page number returned by function 04h
Return: CF clear
Note: QEMM mode unchanged if not AUTO/ON
AH = 06h make new mapping context???
DX = page number of 4K page to hold page table
Return: CF clear
Note: copies page table into given page and then sets ???
page table entry to point at copy
AH = 07h get mapping context
Return: CF clear
DX = page number of page table for current mapping
context
AH = 08h set mapping context???
DX = linear page number of page table
Return: CF clear
AH = 09h get linear page number for page table entry
CX = page table index
Return: CF clear
DX = linear page number
AH = 0Ah set linear page number for page table entry
CX = page table index
DX = linear page number
Return: CF clear
AH = 0Bh map 4K pages
BX = number of pages
CX = first page number (must be 0100h to allocate HMA)
DX = EMS handle (memory belonging to EMS handle will be mapped
into the address space beginning with the first page
allocated to the handle)
Return: AH = 00h
AH = 0Ch get available memory
Return: CF clear
BX = 0001h
CX = total 4K pages???
DX = number of 4K pages free
AH = 0Dh ??? (related to callbacks)
AL = 00h/01h/02h ???
Return: CF clear
AH = 0Eh set ??? callbacks
DS:BX -> FAR routine for ???
ES:DX -> FAR routine for ???
Return: CF clear
Note: DS:BX callback should return BX=???; ES:DX is called
with BX=???, and should set the ??? from which the
other handler read the value of BX. BH and BL
appear to be separate values.
AH = 0Fh unmap 4K pages
CX = first page number
DX = number of pages
Return: CF clear
AL = 00h/01h if ???
Note: if CX=0100h and DX=0010h, the HMA is remapped to
simulate a disabled A20
AX = 1000h get protected-mode interface
DS:SI -> 16-byte buffer for two GDT entries
ES:DI -> buffer for 4K page table
Return: CF clear
EAX = offset of protected-mode API entry point
DS:SI buffer filled with two GDT descriptors
first is QEMM code segment, second is data???
ES:DI buffer filled with 4K page table
DI points to first unused page table entry
SeeAlso: INT 67/AX=DE01h
AX = 1001h get CPU debug registers
ES:DI -> buffer for debug registers (8 DWORDs)
Return: CF clear
BL = INT01 handling (see function 1002h)
ES:DI buffer filled
AX = 1002h set CPU debug registers
BL = INT01 handling
00h reflect all debugging exceptions as V86-mode INT 01's
else convert debugging exceptions other than single-step
into V86-mode INT 03's, single-step to INT 01's
ES:DI -> buffer containing debug registers (8 DWORDs)
Return: CF clear
Notes: identical to INT 67/AX=DE09h if BL=01h
the INT01 handling flag is set to 01h by the general-
protection violation handler for certain privileged
instructions
AX = 1003h get machine status word CR0
Return: CF clear
EAX = contents of CR0
SeeAlso: INT 67/AX=DE07h
AX = 1004h allocate a 4K page
Return: CF clear if successful
EDX = linear address of allocated page
CF set on error
SeeAlso: INT 67/AX=DE04h
AX = 1005h free 4K page
EDX = linear address of page to free
Return: CF clear
SeeAlso: INT 67/AX=DE05h
AX = 1006h NOP
Return: CF set
AX = 1007h get maximum physical memory address
Return: CF clear
EDX = physical address of highest 4K memory page
SeeAlso: INT 67/AX=DE02h
AX = 1008h get physical address of page in first megabyte
CX = page number (linear address shifted right 12 bits)
Return: CF clear
EDX = linear address of page
SeeAlso: function 1F00h
AX = 1009h switch to protected mode
ESI = linear address in first megabyte of system reg values
(see INT 67/AX=DE0Ch)
interrupts disabled
Return: interrupts disabled
GDTR, IDTR, LDTR, TR loaded
SS:ESP must have at least 16 bytes space, and the
entry point is required to set up a new stack
before enabling interrupts
EAX, ESI, DS, ES, FS, GS destroyed
AX = 100Ah switch back to virtual-86 mode
DS = selector for data segment from function 1000h
SS:ESP in first megabyte of linear memory
interrupts disabled
STACK: QWORD return address from FAR call to 32-bit segment
DWORD EIP
DWORD CS
DWORD reserved for EFLAGS
DWORD ESP
DWORD SS
DWORD ES
DWORD DS
DWORD FS
DWORD GS
will switch to virtual86 mode with interrupts disabled, all
segment registers loaded, and EAX destroyed.
AH = 11h get memory type map
AL = zero/nonzero ??? (set by QEMM.COM but apparently ignored
by QEMM 6.00)
ES:DI -> 256-byte buffer for memory types
Return: CF clear
BL = ???
ES:DI buffer filled
Note: each byte of the buffer corresponds to a 4K page, and
contains the type of that page: 00h = mappable,
02h = mapped ROM, 03h = high RAM, 04h = excluded,
05h = video, 06h = ROM, 07h = adapter ROM,
08h = split ROM, 09h = page frame, 0Ah = RAMmable,
0Bh = conventional
AH = 12h get HIRAM chain
Return: CF clear
BX = segment of first MCB in high memory
0000h if no high memory
AX = 1300h VIDRAMEGA???
BL = 00h copy ???
nonzero copy ??? (reverse)
Return: CF clear
AL = 00h if all pages clean
= 01h if any page dirty
AX = 1301h check if ???
DX:DI = start address of range to check ???
CX = length of range
Return: CF clear
CX = ??? (0000h or 1000h)
AX = 1302h ???
BL = ???
BH = ???
CX = ???
SI = offset of ???
DI = offset of ???
???
Return: CF clear
???
Note: disables certain interrupts at the two 8259 PICs during
execution; also modifies CRT controller during
execution under certain circumstances
AX = 1303h ??? EMS allocation
BX = number of pages of EMS to allocate
???
Return: CF clear if successful
CF set on error
???
AX = 1304h EMS deallocation
DX = EMS handle
Return: CF clear
AX = 1305h ???
CX = ???
Return: CF clear
Note: disables certain interrupts at the two 8259 PICs during
execution (see AX=130Ch)
AX = 1306h set DESQview critical section counter address
ES:BX -> WORD DESQview critical section counter or 0000h:0000h
Return: CF clear
Note: also sets pointer in low-memory part of QEMM to current
value of INT 15 if ES:BX not 0000h:0000h
AX = 1307h ???
Return: CF clear
Note: disables certain interrupts at the two 8259 PICs during
execution (see AX=130Ch)
AX = 1308h ???
BL = ??? (zero/nonzero)
Return: CF clear
AX = 1309h Hercules mode-change support
ES:BX -> new address for Hercules mode-change callback
Return: CF clear
Note: the callback function is called whenever the CRTC mode
register is written, with AL set to the value written
AX = 130Ah virtualize EGA/VGA I/O ports 03C8h/03C9h???
CX:DX -> buffer for storing CRTC register contents???
or 0000h:0000h to disable
Return: CF clear
AX = 130Bh ???
BL = ???
Return: CF clear
???
AX = 130Ch set interrupts to mask
BX = interrupts to mask out during AX=1302h,AX=1307h,AX=1308h,
AX=130Dh,AX=1310h (BL = master PIC, BH = slave PIC)
Return: CF clear
AX = 130Dh ???
???
Return: CF clear
Note: disables certain interrupts at the two 8259 PICs during
execution (see AX=130Ch)
AX = 130Eh ??? (modifies CRT controller setup)
???
Return: CF clear
AX = 130Fh reset ???
Return: CF clear
AX = 1310h ???
???
Return: CF clear
Note: disables certain interrupts at the two 8259 PICs during
execution (see AX=130Ch)
AX = 1311h set ???
BL = ???
Return: CF clear
AX = 1312h (v6.02) NOP???
Note: called by DV 2.42, but appears to be a NOP in QEMM 6.02
AX = 1400h ???
ES:DI -> ??? data structure (at least 24 bytes)
BL = ???
Return: AX = ???
Data structure
Offset Size Description
00h WORD ???
02h DWORD far pointer to ???
06h DWORD far pointer to ??? pointer array (see below)
0Ah DWORD far pointer to ???
0Eh DWORD ???
12h WORD segment of ???
14h DWORD far pointer to ???
Pointer array
Offset Size Description
00h WORD number of pointers to follow
02h N DWORDs far pointers to ???
Note: QEMM converts the pointers into linear addresses in place
AX = 1401h ???
Return: CF clear
???
AX = 1402h ???
BL = function
00h NOP
01h ???
02h ???
other ???
ES:DI -> ???
Return: CF clear
???
Data structure
Offset Size Description
00h WORD segment of ??? (X, word at X:0136h set to X)
02h WORD segment of ??? (word at X:0124h set to this)
04h WORD number of paragraphs of ???
06h 3 WORDs ??? (copied to X:0000h)
0Ch WORD ???
AX = 1403h add ??? to list and ??? (execute func 1406h)
ES:DI -> ??? structure added to end of ??? list
(at least 31 bytes, DWORD at offset 06h used for
storing pointer to next struc, WORD at offset 00h
seems to be a key or index)
Return: CF clear
AX = 1404h NOP
AX = 1405h remove ??? from ??? list
BX = key???
Return: CF clear
AX = 1406h ???
???
Return: CF clear
???
AX = 1407h ???
???
Return: CF clear
???
AX = 1408h ???
???
Return: CF clear
???
AX = 1409h ???
???
Return: CF clear
???
AX = 140Ah ???
BX = ???
Return: CF clear
???
AX = 140Bh ???
BX = ???
Return: CF clear
SI = segment of 256-byte buffer???
AH = 15h ???
ES:BX -> ??? or 0000h:0000h
Return: CF clear
---QEMM v5.00+ ---
AX = 1600h get memory access status
ES:DI -> 256-byte buffer
Return: ES:DI buffer filled
Note: each byte of the buffer indicates the status of a 4K
page (bit 0 set if read, bit 1 set if written)
AX = 1601h set memory access status
ES:DI -> 256-byte buffer containing access statuses (see above)
AH = 17h get memory usage statistics
ES:DI -> 81-byte buffer for memory statistics (see below)
Return: CF clear
---QEMM v5.11+ ---
AH = 18h check whether conventional memory mapped into address range
ES:BX = starting address
CX = number of 4K pages
Return: CF clear
AL = 00h one or more pages is remapped
01h all pages in range are conventional memory
(physical address == virtual address)
AH = 19h NOP
Return: CF set
AH = 1Ah I/O port access
AL = subfunction
00h get byte from I/O port
Return: BL = port value
01h send byte to I/O port
BL = value to send
02h send byte to I/O port, get byte from following port
BH = value to send
Return: BL = value read
03h send bytes to two consecutive I/O ports
BH = value for first I/O port (DX)
BL = value for second I/O port (DX+1)
DX = port number
Return: CF clear
AH = 1Bh MS Windows 3 support
AL = subfunction
00h get ???
ES:DI -> buffer for ??? data structure
Return: CF set on error
CF clear if successful
Data structure:
Offset Size Description
00h DWORD pointer to ???
04h BYTE ??? (v6.00 sets to 01h)
05h BYTE ??? (v6.00 sets to 00h or 0Bh)
SeeAlso: INT 21/AX=4402h"QEMM"
01h ???
Return: CF set on error
CF clear if successful
02h ???
Return: CF set on error
CF clear if successful
03h MS Windows initializing
CX = segment from which Windows init broadcast made???
DL = Windows startup flags???
DI = Windows version number (major in upper byte)
Return: ???
SeeAlso: INT 2F/AX=1605h
04h MS Windows terminating
Return: CF clear
05h determine whether program is driver???
DS:DX -> ASCIZ filename
Return: CF clear
AL = 01h if string ends in ".DRV"
= FFh if string ends in "GDI.EXE"
= 00h otherwise
06h ???
CX = length of data pointed at by DS:DX
DS:DX -> ???
Return: CF clear
07h BUG: QEMM 6.00-6.03 accept this and branch randomly
else Return: CF set
AH = 1Ch protected-mode hardware interrupt handlers ???
AL = subfunction
00h restore??? IRQ0-7 handlers
01h set??? IRQ0-7 handlers
ES:DI -> 8 DWORDs containing ???
02h restore??? IRQ8-15 handlers
03h set??? IRQ8-15 handlers
ES:DI -> 8 DWORDs containing ???
BUG: although the jump table only contains four entries,
QEMM 6.00 will attempt to use it for any value of
AL between 00h and 2Ah, thus branching unpredictably
for AL=04h-2Ah
---QEMM v6.00+ ---
AH = 1Dh Stealth interrupts
AL = subfunction
00h switch to pre-Stealth interrupt vector table
Note: also switches VGA Save table pointer
(0040h:00A8h) and overwrites the vectors
currently assigned for use by the two
interrupt controllers (see INT 67/AX=DE0Ah)
with the vectors for INT 08-0F and 70-77 (to
avoid crashing the system).
01h restore user interrupt vector table
Notes: interrupts should be disabled around the
AX=1D00h and AX=1D01h calls because QEMM does
not modify the memory maps to map in ROM, so
an interrupt could be disastrous
clears any pending IRQ7 at end of function
else
Return: CF set
AH = 1Eh Stealth information
AL = subfunction
00h get Stealth configuration
Return: BL = flags
bit 0: conventional memory sorted
bit 1: conventional memory filled
bit 2: ???
bit 3: ???
bit 4: expanded memory is in use
bit 5: ???
BH = ??? (always 00h for v6.00)
CL = stealth type (00h none,46h Frame,4Dh Map)
CH = ??? (zero/nonzero important)
DX = ??? (always 0000h for v6.00)
SI = ??? (always 0000h for v6.00)
DI = ??? (always 0000h for v6.00)
01h get number of Stealth'ed ROMs
Return: CF clear
BX = number of Stealth'ed ROMs
02h get Stealth'ed ROM info
ES:DI -> buffer for Stealth ROM info (see below)
Return: CF clear
BX = number of Stealth'ed ROMs
ES:DI buffer filled
else
Return: CF set
AH = 1Fh page table manipulation
AL = subfunction
00h get page table entry
CX = page number
Return: EDX = page table entry
CF clear
01h set page table entry
CX = page number
EDX = page table entry
Return: CF clear
SeeAlso: function 1008h
else
Return: CF set
AH = 20h asynchronous disk access support???
AL = subfunction
00h get ???
Return: CF clear
BL = flags
bit 7: ??? (set if Stealth:F or :M active)
bit 0: ???
01h set ???
BL = ??? (bit 0 only)
Return: CF clear
else
Return: CF set
AH = 21h Stealth support
AL = subfunction
00h copy data from Stealthed address space
DS:SI -> start address of hidden memory to copy
ES:DI -> buffer for copied data
ECX = number of bytes to copy
Return: CF clear if successful
CF set on error (DS:SI < C000h:0000h or
DS:SI + ECX > 1M)
else
Return: CF set
---QEMM v6.03 only---
AH = 22h DESQview/X support
AL = subfunction
00h get ???
Return: CF clear
ES:DI -> ???
01h set ???
ES:DI -> ??? or 0000h:0000h
Return: CF clear if successful
CF set on error
other
Return: CF set
Format of QEMM 6.0 memory statistics:
Offset Size Description
00h BYTE 01h if Shadow RAM found, 00h otherwise
01h DWORD initial conventional memory in bytes
05h DWORD initial extended memory in bytes
09h DWORD initial expanded memory in bytes
0Dh DWORD initial "top" or "shadow" memory in bytes
11h DWORD Unavailable conventional memory in bytes
15h DWORD Unavailable extended memory in bytes
19h DWORD Unavailable expanded memory in bytes
1Dh DWORD Unavailable "top" or "shadow" memory in bytes
Add to offset 49h for Total unavailable top/shadow.
21h DWORD QEMM code size in bytes
25h DWORD QEMM data size in bytes
29h DWORD bytes used for TASKS=
2Dh DWORD DMA buffer size
31h DWORD bytes used for MAPS=
35h DWORD bytes of high RAM
39h DWORD bytes used by mapped ROMs
3Dh DWORD bytes of conventional memory provided by QEMM
41h DWORD bytes of extended memory NOT converted by QEMM (EXT=xxx)
45h DWORD bytes of EMS/XMS pool memory provided by QEMM
49h DWORD Unavailable "top" or "shadow" memory in bytes
Add to offset 1Dh for Total unavailable top/shadow.
4Dh DWORD conventional memory overhead in bytes
(set to 0 by QEMM.COM prior to call)
Format of Stealth ROM info [array]:
Offset Size Description
00h WORD starting segment of ROM
02h WORD length of ROM in paragraphs
----------6740-------------------------------
INT 67 - LIM EMS - GET MANAGER STATUS
AH = 40h
Return: AH = status
00h successful
80h internal error
81h hardware malfunction
84h undefined function requested by application
Note: this call can be used only after establishing that the EMS driver is in
fact present
SeeAlso: AH=3Fh,AX=FFA5h
----------6741-------------------------------
INT 67 - LIM EMS - GET PAGE FRAME SEGMENT
AH = 41h
Return: AH = 00h function successful
BX = segment of page frame
AH = error code (see AH=40h)
SeeAlso: AH=58h,AH=68h
----------6742-------------------------------
INT 67 - LIM EMS - GET NUMBER OF PAGES
AH = 42h
Return: AH = 00h function successful
BX = number of unallocated pages
DX = total number of pages
AH = error code (see AH=40h)
SeeAlso: INT 2F/AX=2702h
----------6743-------------------------------
INT 67 - LIM EMS - GET HANDLE AND ALLOCATE MEMORY
AH = 43h
BX = number of logical pages to allocate
Return: AH = status
00h function successful
DX = handle
80h internal error
81h hardware malfunction
84h undefined function requested
85h no more handles available
87h more pages requested than physically exist
88h more pages requested than currently available
89h zero pages requested
SeeAlso: AH=45h
----------6744-------------------------------
INT 67 - LIM EMS - MAP MEMORY
AH = 44h
AL = physical page number (0-3)
BX = logical page number
DX = handle
Return: AH = status
00h function successful
80h internal error
81h hardware malfunction
83h invalid handle
84h undefined function requested
8Ah invalid logical page number
8Bh illegal physical-page number
SeeAlso: AH=69h
----------6745-------------------------------
INT 67 - LIM EMS - RELEASE HANDLE AND MEMORY
AH = 45h
DX = EMM handle
Return: AH = status
00h successful
80h internal error
81h hardware malfunction
83h invalid handle
84h undefined function requested
86h error in save or restore of mapping context
SeeAlso: AH=43h
----------6746-------------------------------
INT 67 - LIM EMS - GET EMM VERSION
AH = 46h
Return: AH = status
00h successful
AL = EMM version number
80h internal error
81h hardware malfunction
84h undefined function requested
----------6747-------------------------------
INT 67 - LIM EMS - SAVE MAPPING CONTEXT
AH = 47h
DX = handle
Return: AH = status
00h successful
80h internal error
81h hardware malfunction
83h invalid handle
84h undefined function requested
8Ch page-mapping hardware state save area is full
8Dh save of mapping context failed
SeeAlso: AH=48h
----------6748-------------------------------
INT 67 - LIM EMS - RESTORE MAPPING CONTEXT
AH = 48h
DX = handle
Return: AH = status
00h successful
80h internal error
81h hardware malfunction
83h invalid handle
84h undefined function requested
8Eh restore of mapping context failed
SeeAlso: AH=47h
----------6749-------------------------------
INT 67 - LIM EMS - reserved - GET I/O PORT ADDRESSES
AH = 49h
Note: defined in EMS 3.0, but undocumented in EMS 3.2
----------674A-------------------------------
INT 67 - LIM EMS - reserved - GET TRANSLATION ARRAY
AH = 4Ah
Note: defined in EMS 3.0, but undocumented in EMS 3.2
----------674B-------------------------------
INT 67 - LIM EMS - GET NUMBER OF EMM HANDLES
AH = 4Bh
Return: AH = status
00h successful
BX = number of EMM handles
80h internal error
81h hardware malfunction
83h invalid handle
84h undefined function requested
----------674C-------------------------------
INT 67 - LIM EMS - GET PAGES OWNED BY HANDLE
AH = 4Ch
DX = EMM handle
Return: AH = status
00h successful
BX = number of logical pages
80h internal error
81h hardware malfunction
83h invalid handle
84h undefined function requested
SeeAlso: AH=4Dh
----------674D-------------------------------
INT 67 - LIM EMS - GET PAGES FOR ALL HANDLES
AH = 4Dh
ES:DI -> array to receive information
Return: AH = status
00h successful
BX = number of active EMM handles
array filled with 2-word entries, consisting of a handle
and the number of pages allocated to that handle
80h internal error
81h hardware malfunction
84h undefined function requested
SeeAlso: AH=4Ch
----------674E-------------------------------
INT 67 - LIM EMS - GET OR SET PAGE MAP
AH = 4Eh
AL = 00h if getting mapping registers
01h if setting mapping registers
02h if getting and setting mapping registers at once
03h if getting size of page-mapping array
DS:SI -> array holding information (AL=01/02)
ES:DI -> array to receive information (AL=00/02)
Return: AH = status
00h successful
AL = bytes in page-mapping array (AL=03h only)
array pointed to by ES:DI receives mapping info (AL=00h/02h)
80h internal error
81h hardware malfunction
84h undefined function requested
8Fh undefined subfunction parameter
A3h contents of source array corrupted (EMS 4.0?)
Note: this function was designed to be used by multitasking operating systems
and should not ordinarily be used by appplication software.
SeeAlso: AH=4Fh
----------674F-------------------------------
INT 67 - LIM EMS 4.0 - GET/SET PARTIAL PAGE MAP
AH = 4Fh
AL = subfunction
00h get partial page map
DS:SI -> structure containing list of segments whose mapping
contexts are to be saved
ES:DI -> array to receive page map
01h set partial page map
DS:SI -> structure containing saved partial page map
02h get size of partial page map
BX = number of mappable segments in the partial map to be saved
Return: AH = status
00h successful
80h internal error
81h hardware malfunction
84h undefined function requested
8Bh one of specified segments is not mappable
8Fh undefined subfunction parameter
A3h contents of partial page map corrupted or count of mappable
segments exceeds total number of mappable segments in system
AL = size of partial page map for subfunction 02h
SeeAlso: AH=4Eh
----------6750-------------------------------
INT 67 - LIM EMS 4.0 - MAP/UNMAP MULTIPLE HANDLE PAGES
AH = 50h
AL = subfunction
00h use physical page numbers
01h use segment addresses
DX = handle
CX = number of entries in array
DS:SI -> mapping array (see below)
Return: AH = status
00h successful
80h internal error
81h hardware malfunction
83h invalid handle
84h undefined function requested
8Ah one or more logical pages are invalid
8Bh one or more physical pages are invalid
8Fh invalid subfunction
SeeAlso: AH=40h
Format of mapping array entry:
Offset Size Description
00h WORD logical page number or FFFFh to unmap physical page
02h WORD physical page number or segment address
----------6751-------------------------------
INT 67 - LIM EMS 4.0 - REALLOCATE PAGES
AH = 51h
DX = handle
BX = number of pages to be allocated to handle
Return: BX = actual number of pages allocated to handle
AH = status
00h successful
80h internal error
81h hardware malfunction
83h invalid handle
84h undefined function requested
87h more pages requested than present in system
88h more pages requested than currently available
----------6752-------------------------------
INT 67 - LIM EMS 4.0 - GET/SET HANDLE ATTRIBUTES
AH = 52h
AL = subfunction
00h get handle attributes
Return: AL = attribute
00h handle is volatile
01h handle is nonvolatile
01h set handle attributes
BL = new attribute (see returned AL)
02h get attribute capability
Return: AL = attribute capability
00h only volatile handles supported
01h both volatile and non-volatile supported
DX = handle
Return: AH = status
00h successful
80h internal error
81h hardware malfunction
83h invalid handle
84h undefined function requested
8Fh undefined subfunction
90h undefined attribute type
91h feature not supported
SeeAlso: AH=53h
----------6753-------------------------------
INT 67 - LIM EMS 4.0 - GET/SET HANDLE NAME
AH = 53h
AL = subfunction
00h get handle name
ES:DI -> 8-byte buffer for handle name
01h set handle name
DS:SI -> 8-byte handle name
DX = handle
Return: AH = status
00h successful
80h internal error
81h hardware malfunction
83h invalid handle
84h undefined function requested
8Fh undefined subfunction
A1h duplicate handle name
SeeAlso: AH=52h
----------6754-------------------------------
INT 67 - LIM EMS 4.0 - GET HANDLE DIRECTORY
AH = 54h
AL = subfunction
00h get handle directory
ES:DI -> buffer for handle directory (see below)
01h search for named handle
DS:SI -> 8-byte name
02h get total number of handles
Return: AL = number of entries in handle directory (subfunction 00h)
DX = value of named handle (subfunction 01h)
BX = total number of handles (subfunction 02h)
AH = status
00h successful
80h internal error
81h hardware malfunction
84h undefined function requested
8Fh undefined subfunction
A0h no such handle name
A1h a handle found had no name
Format of handle directory entry:
Offset Size Description
00h WORD handle
02h 8 BYTEs handle's name
----------6755-------------------------------
INT 67 - LIM EMS 4.0 - ALTER PAGE MAP AND JUMP
AH = 55h
AL = subfunction
00h physical page numbers provided by caller
01h segment addresses provided by caller
DX = handle
DS:SI -> structure containing map and jump address
Return: (at target address unless error)
AH = status
00h successful
80h internal error
81h hardware failure
83h invalid handle
84h undefined function requested
8Ah invalid logical page number encountered
8Bh invalid physical page number encountered
8Fh invalid subfunction
SeeAlso: AH=56h
----------6756-------------------------------
INT 67 - LIM EMS 4.0 - ALTER PAGE MAP AND CALL
AH = 56h
AL = subfunction
00h physical page numbers provided by caller
DX = handle
DS:SI -> structure containing page map and call address
01h segment addresses provided by caller
DX = handle
DS:SI -> structure containing page map and call address
02h get page map stack space required
Return: BX = stack space required
Return: (if successful, the target address is called. Use a RETF to return and
restore mapping context)
AH = status (see AH=55h)
SeeAlso: AH=55h
----------6757-------------------------------
INT 67 - LIM EMS 4.0 - MOVE/EXCHANGE MEMORY REGION
AH = 57h
AL = subfunction
00h move memory region
01h exchange memory region
DS:SI -> structure describing source and destination (see below)
Return: AH = status
00h successful
80h internal error
81h hardware failure
83h invalid handle
84h undefined function requested
8Ah invalid logical page number encountered
8Fh undefined subfunction
92h successful, but a portion of the source region has been
overwritten
93h length of source or destination region exceeds length of region
allocated to either source or destination handle
94h conventional and expanded memory regions overlap
95h offset within logical page exceeds size of logical page
96h region length exceeds 1M
97h source and destination EMS regions have same handle and overlap
98h memory source or destination type undefined
A2h attempted to wrap around 1M conventional address space
Note: source and destination may overlap for a move, in which case the copy
direction is chosen such that the destination receives an intact copy
of the source region
Format of EMS copy data:
Offset Size Description
00h DWORD region length in bytes
04h BYTE source memory type
00h conventional
01h expanded
05h WORD source handle (0000h if conventional memory)
07h WORD source initial offset (within page if EMS, segment if convent)
09h WORD source initial segment (conv mem) or logical page (EMS)
0Bh BYTE destination memory type
00h conventional
01h expanded
0Ch WORD destination handle
0Eh WORD destination initial offset
10h WORD destination initial segment or page
----------6758-------------------------------
INT 67 - LIM EMS 4.0 - GET MAPPABLE PHYSICAL ADDRESS ARRAY
AH = 58h
AL = subfunction
00h get mappable physical address array
ES:DI -> buffer to be filled with array
01h get number of entries in m.p.a. array
Return: CX = number of entries in array
AH = status
00h successful
80h internal error
81h hardware failure
84h undefined function requested
8Fh undefined subfunction
Note: the returned array for subfunction 00h is filled in physical segment
address order
Format of mappable physical address entry:
Offset Size Description
00h WORD physical page segment
02h WORD physical page number
----------6759-------------------------------
INT 67 - LIM EMS 4.0 - GET EXPANDED MEMORY HARDWARE INFORMATION
AH = 59h
AL = subfunction
00h get hardware configuration array
ES:DI -> buffer to be filled with array (see below)
01h get unallocated raw page count
Return: BX = unallocated raw pages
DX = total raw pages
Return: AH = status
00h successful
80h internal error
81h hardware failure
84h undefined function requested
8Fh undefined subfunction
A4h access denied by operating system
Note: subfunction 00h is for use by operating systems only, and can be
enabled or disabled at any time by the operating system
Format of hardware configuration array:
Offset Size Description
00h WORD size of raw EMM pages in paragraphs
02h WORD number of alternate register sets
04h WORD size of mapping-context save area in bytes
06h WORD number of register sets assignable to DMA
08h WORD DMA operation type
0000h DMA with alternate register sets
0001h only one DMA register set
----------675A-------------------------------
INT 67 - LIM EMS 4.0 - ALLOCATE STANDARD/RAW PAGES
AH = 5Ah
AL = subfunction
00h allocate standard pages
01h allocate raw pages
BX = number of pages to allocate
Return: DX = handle
AH = status
00h successful
80h internal error
81h hardware failure
84h undefined function requested
85h no more handles available
87h insufficient memory pages in system
88h insufficient memory pages available
8Fh undefined subfunction
----------675B-------------------------------
INT 67 - LIM EMS 4.0 - ALTERNATE MAP REGISTER SET
AH = 5Bh
AL = subfunction
00h get alternate map register set
Return: BL = current active alternate map register set number
ES:DI -> map register context save area if BL=00h
01h set alternate map register set
BL = new alternate map register set number
ES:DI -> map register context save area if BL=0
02h get alternate map save array size
Return: DX = array size in bytes
03h allocate alternate map register set
Return: BL = number of map register set; 00h = not supported
04h deallocate alternate map register set
BL = number of alternate map register set
Return: AH = status
00h successful
80h internal error
81h hardware malfunction
84h undefined function requested
8Fh undefined subfunction
9Ah specified alternate map register set not supported
9Bh all alternate map register sets currently allocated
9Ch alternate map register sets not supported
9Dh undefined or unallocated alternate map register set
A3h source array corrupted
A4h operating system denied access
Note: this function is for use by operating systems only, and can be
enabled or disabled at any time by the operating system
----------675B-------------------------------
INT 67 - LIM EMS 4.0 - ALTERNATE MAP REGISTER SET - DMA REGISTERS
AH = 5Bh
AL = subfunction
05h allocate DMA register set
Return: BL = DMA register set number, 00h if not supported
06h enable DMA on alternate map register set
BL = DMA register set number
DL = DMA channel number
07h disable DMA on alternate map register set
BL = DMA register set number
08h deallocate DMA register set
BL = DMA register set number
Return: AH = status
00h successful
80h internal error
81h hardware malfunction
84h undefined function requested
8Fh undefined subfunction
9Ah specified DMA register set not supported
9Bh all DMA register sets currently allocated
9Ch alternate DMA sets not supported
9Dh undefined or unallocated DMA register set
9Eh dedicated DMA channels not supported
9Fh specified dedicated DMA channel not supported
A3h source array corrupted
A4h operating system denied access
Note: this function is for use by operating systems only, and can be
enabled or disabled at any time by the operating system
----------675BE0-----------------------------
INT 67 - MICEMM v4D - GET LINEAR ADDRESS OF MEMORY
AX = 5BE0h
ES:BX -> memory for which to get linear address
Return: AH = 00h
DX:CX = linear address of physical memory corresponding to ES:BX
SeeAlso: AX=5BF0h,AX=5BF1h
----------675BF0-----------------------------
INT 67 - MICEMM v4D - INSTALLATION CHECK
AX = 5BF0h
Return: AH = 00h if MICEMM present
BX = code segment of driver
Note: MICEMM is the Micronics Expanded Memory Manager
SeeAlso: AH=3Fh,AX=5BE0h,AX=5BF1h
----------675BF1-----------------------------
INT 67 - MICEMM v4D - GET MEMORY TYPES
AX = 5BF1h
ES:BX -> 256-byte buffer for memory types
Return: AH = 00h
ES:BX buffer filled
Note: each byte in the buffer specifies the type of a 4K page of memory:
00h unused
02h DOS extension
04h shadowed ROM
08h mappable EMS
10h page frame
20h ROM
40h reserved (video memory, etc)
80h RAM
SeeAlso: AX=5BE0h,AX=5BF0h
----------675C-------------------------------
INT 67 - LIM EMS 4.0 - PREPARE EXPANDED MEMORY HARDWARE FOR WARM BOOT
AH = 5Ch
Return: AH = status
00h successful
80h internal error
81h hardware malfunction
84h undefined function requested
----------675D-------------------------------
INT 67 - LIM EMS 4.0 - ENABLE/DISABLE OS FUNCTION SET FUNCTIONS
AH = 5Dh
AL = subfunction
00h enable OS Function Set
01h disable OS Function Set
02h return access key (resets memory manager, returns access key at
next invocation)
BX,CX = access key returned by first invocation
Return: BX,CX = access key, returned only on first invocation of function
AH = status
00h successful
80h internal error
81h hardware malfunction
84h undefined function requested
8Fh undefined subfunction
A4h operating system denied access
----------6760-------------------------------
INT 67 - EEMS - GET PHYSICAL WINDOW ARRAY
AH = 60h
ES:DI -> buffer
Return: AH = status
AL = number of entries
buffer at ES:DI filled
----------6761-------------------------------
INT 67 - EEMS - GENERIC ACCELERATOR CARD SUPPORT
AH = 61h
???
Return: ???
Note: can be used by accelerator card manufacturer to flush RAM cache,
ensuring that the cache accurately reflects what the processor would
see without the cache.
----------6768-------------------------------
INT 67 - EEMS - GET ADDRESSES OF ALL PAGE FRAMES IN SYSTEM
AH = 68h
ES:DI -> buffer
Return: AH = status
AL = number of entries
buffer at ES:DI filled
Note: equivalent to LIM 4.0 function 58h
----------6769-------------------------------
INT 67 - EEMS - MAP PAGE INTO FRAME
AH = 69h
AL = frame number
BX = page number
DX = handle
Return: AH = status
Note: similar to EMS function 44h
SeeAlso: AH=44h,AH=50h,AH=6Ah
----------676A-------------------------------
INT 67 - EEMS - PAGE MAPPING
AH = 6Ah
AL = subfunction
00h save partial page map
CH = first page frame
CL = number of frames
ES:DI -> buffer which is to be filled
01h restore partial page map
CH = first page frame
CL = number of frames
DI:SI -> previously saved page map
02h save and restore partial page map
CH = first page frame
CL = number of frames
ES:DI = buffer for current page map
DI:SI = new page map
03h get size of save array
CH = first page frame
CL = number of frames
Return: AL = size of array in bytes
04h switch to standard map register setting
05h switch to alternate map register setting
06h deallocate pages mapped to frames in conventional memory
CH = first page frame
CL = number of frames
Return: AH = status
Note: similar to EMS function 4Eh, except that a subrange of pages can be
specified
SeeAlso: AH=69h
----------67DD-------------------------------
INT 67 - Quadtel QMAPS - API
AH = DDh
AL = function
???
Return: ???
Notes: details are not yet available
Hewlett-Packard's HPMM.SYS is a licensed version of QMAPS, and thus
supports this API
SeeAlso: AH=3Fh,AX=FFA5h
----------67DE00-----------------------------
INT 67 - Virtual Control Program Interface - INSTALLATION CHECK
AX = DE00h
Return: AH = 00h VCPI is present
BH = major version number
BL = minor version number
AH nonzero VCPI not present
SeeAlso: INT 2F/AX=1687h
----------67DE01-----------------------------
INT 67 - Virtual Control Program Interface - GET PROTECTED MODE INTERFACE
AX = DE01h
ES:DI -> 4K page table buffer
DS:SI -> three descriptor table entries in GDT
first becomes code segment descriptor, other two for use by
main control program
Return: AH = 00h successful
DI -> first unused page table entry in buffer
EBX -> protected mode entry point in code segment
AH = nonzero failed
Note: protected mode entry point may be called with AX=DE00h-DE05h and
AX=DE0Ch (in each case, all other registers as appropriate for
the function)
SeeAlso: INT 2F/AX=1687h,INT 67/AH=3Fh
QEMM v6.03 protected mode entry point may also be called with:
AX = DF00h ???
???
Return: ???
AX = DF01h ???
???
Return: ???
----------67DE02-----------------------------
INT 67 - Virtual Control Program Interface - GET MAX PHYSICAL MEMORY ADDRESS
AX = DE02h
Return: AH = 00h successful
EDX = physical address of highest 4K memory page
AH nonzero: failed
SeeAlso: AH=3Fh
----------67DE03-----------------------------
INT 67 - Virtual Control Program Interface - GET NUMBER OF FREE 4K PAGES
AX = DE03h
Return: AH = 00h successful
EDX = number of free 4K pages
AH nonzero: failed
Notes: returns total number of pages available to ALL tasks in system
also available in protected mode by calling the protected-mode VCPI
entry point
SeeAlso: AX=DE04h
----------67DE04-----------------------------
INT 67 - Virtual Control Program Interface - ALLOCATE A 4K PAGE
AX = DE04h
Return: AH = 00h successful
EDX = physical address of allocated page
AH nonzero: failed
Notes: the client program is responsible for freeing all memory allocated
with this call before terminating
also available in protected mode by calling the protected-mode VCPI
entry point
SeeAlso: AH=3Fh,AX=DE03h,AX=DE05h
----------67DE05-----------------------------
INT 67 - Virtual Control Program Interface - FREE 4K PAGE
AX = DE05h
EDX = physical address of 4K page
Return: AH = 00h successful
AH nonzero: failed
Note: also available in protected mode by calling the protected-mode VCPI
entry point
SeeAlso: AH=3Fh,AX=DE04h
----------67DE06-----------------------------
INT 67 - Virtual Control Program Interface - GET PHYS ADDR OF PAGE IN FIRST MB
AX = DE06h
CX = page number (linear address shifted right 12 bits)
Return: AH = 00h successful
EDX = physical address of page
AH nonzero: invalid page number (AH = 8Bh recommended)
----------67DE07-----------------------------
INT 67 - Virtual Control Program Interface - READ CR0
AX = DE07h
Return: AH = 00h
EBX = value of Control Register 0
SeeAlso: AH=3Fh,AX=DE07h
----------67DE08-----------------------------
INT 67 - Virtual Control Program Interface - READ DEBUG REGISTERS
AX = DE08h
ES:DI -> array of 8 DWORDs
Return: AH = 00h
buffer filled with DR0 first, DR7 last, DR4 and DR5 unused
SeeAlso: AH=3Fh,AX=DE09h
----------67DE09-----------------------------
INT 67 - Virtual Control Program Interface - SET DEBUG REGISTERS
AX = DE09h
ES:DI -> array of 8 DWORDs holding new values of debug registers
Return: AH = 00h
Note: values for DR4 and DR5 ignored
SeeAlso: AH=3Fh,AX=DE08h
----------67DE0A-----------------------------
INT 67 - Virtual Control Program Interface - GET 8259 INTERRUPT VECTOR MAPPINGS
AX = DE0Ah
Return: AH = 00h successful
BX = first vector used by master 8259 (IRQ0)
CX = first vector used by slave 8259 (IRQ8)
AH nonzero: failed
Note: CX is undefined in systems without a slave 8259
SeeAlso: AX=DE0Bh,INT 21/AX=250Ch,INT 31/AX=0400h
----------67DE0B-----------------------------
INT 67 - Virtual Control Program Interface - SET 8259 INTERRUPT VECTOR MAPPINGS
AX = DE0Bh
BX = first vector used by master 8259
CX = first vector used by slave 8259
interrupts disabled
Return: AH = 00h successful
AH nonzero: failed
Notes: This call merely informs the server that the client has changed the
interrupt mappings. The client may not change the mappings if they
have already been changed by the server or another client, and is
responsible for restoring the original mappings before terminating.
SeeAlso: AX=DE0Ah
----------67DE0C-----------------------------
INT 67 - Virtual Control Program Interface - SWITCH TO PROTECTED MODE
AX = DE0Ch
ESI = linear address in first megabyte of values for system registers
interrupts disabled
Return: interrupts disabled
GDTR, IDTR, LDTR, TR loaded
SS:ESP must have at least 16 bytes space, and the entry point is
required to set up a new stack before enabling interrupts
EAX, ESI, DS, ES, FS, GS destroyed
SeeAlso: AH=3Fh,INT 15/AH=89h,INT 38/AH=10h
Note: in protected mode, calling the protected-mode VCPI entry point with
AX = DE0Ch
DS = segment selector mapping entire linear address space obtained
via AX=DE01h
SS:ESP in first megabyte of linear memory
STACK:QWORD return address from FAR call to 32-bit segment
DWORD EIP
DWORD CS
DWORD reserved for EFLAGS
DWORD ESP
DWORD SS
DWORD ES
DWORD DS
DWORD FS
DWORD GS
and interrupts disabled, will switch to virtual86 mode with
interrupts disabled, all segment registers loaded, and EAX destroyed.
Format of system register values for switch to protected mode:
Offset Size Description
00h DWORD value for CR3
04h DWORD linear address in first megabyte of value for GDTR
08h DWORD linear address in first megabyte of value for IDTR
0Ch WORD value for LDTR
0Eh WORD value for TR
10h PWORD CS:EIP of protected mode entry-point
----------67FFA5-----------------------------
INT 67 - Microsoft EMM386.EXE v4.20+ - INSTALLATION CHECK
AX = FFA5h
Return: AX = 845Ah if loaded
BX:CX -> API entry point
Notes: this call is available even if EMM386 is not providing EMS
if no other program has hooked INT 67, an alternate installation
check is to search for the string
"MICROSOFT EXPANDED MEMORY MANAGER 386" early in the INT 67
handler's segment, usually at offset 14h
SeeAlso: AH=3Fh
Call API entry point with:
AH = 00h get memory manager's status
Return: AH = status
bit 0: not active (OFF)
bit 1: in "Auto" mode
AH = 01h set memory manager's state
AL = new state (00h ON, 01h OFF, 02h AUTO)
AH = 02h Weitek coprocessor support
AL = subfunction
00h get Weitek support state
Return: AL = status
bit 0: Weitek coprocessor is present
bit 1: Weitek support is enabled
01h turn on Weitek support
02h turn off Weitek support
--- v4.20-4.41 only ---
AH = 03h Windows support???
AL = subfunction (00h, 01h)
AH = 04h print copyright notice to standard output
(using INT 21/AH=09h)
AH = 05h print available report
(the one shown when running EMM386 from the DOS prompt)
---------------------------------------------
Interrupt List, part 8 of 8
This compilation is Copyright (c) 1989,1990,1991,1992,1993 Ralf Brown
----------68---------------------------------
INT 68 - Sangoma CCPOP 3270 resident module
SeeAlso: INT 67"Sangoma",INT 92"Sangoma"
----------6801-------------------------------
INT 68 - APPC/PC - NETWORK DEVICE CONTROL
AH = 01h
DS:DX -> control block
Format of control block:
Offset Size Description
00h 12 BYTEs reserved
0Ch WORD verb (action)
0Eh 6 BYTEs 00h
14h DWORD big-endian return code (see below)
---if verb = 1B00h (DISPLAY)---
18h WORD 00h
1Ah 8 BYTEs logical unit ID (big-endian)
22h 8 BYTEs partner logical unit name (big-endian)
2Ah 8 BYTEs mode name (big-endian)
32h BYTE logical unit session limit
33h BYTE partner logical unit session limit
34h BYTE node maximum negotiable session limit
35h BYTE current session limit
36h BYTE minimum negotiated winner limit
37h BYTE maximum negotiated loser limit
38h BYTE active session count
39h BYTE active CONWINNER session count
3Ah BYTE active CONLOSER session count
3Bh BYTE session termination count
3Ch BYTE bit 7: SESSION_TERMINATION_TARGET_DRAIN
bit 6: SESSION_TERMINATION_SOURCE_DRAIN
---if verb=2000h (Attach Physical Unit)---
18h WORD 00h
1Ah BYTE version
1Bh BYTE release
1Ch 8 BYTEs net name (big-endian)
24h 8 BYTEs physical unit name (big-endian)
2Ch 8 BYTEs 00h
34h DWORD pointer to SYSTEM_LOG_EXIT routine, FFFFFFFFh=don't log errors
38h DWORD 00h
3Ch BYTE 00h RETURN_CONTROL: COMPLETE
01h RETURN_CONTROL: INCOMPLETE
---if verb=2100h (Attach Logical Unit)---
18h WORD 70 offset to partner logical unit record
1Ah 8 BYTEs logical unit name (big-endian)
22h 8 BYTEs logical unit ID (big-endian)
2Ah BYTE logical unit local address
2Bh BYTE logical unit session limit
2Ch DWORD pointer to CREATE_TP_EXIT routine,
FFFFFFFFh = reject incoming ALLOCATEs
00000000h = queue ALLOCATEs
30h DWORD 00h
34h DWORD pointer to SYSTEM_LOG_EXIT routine, FFFFFFFFh=don't log errors
38h DWORD 00h
3Ch BYTE maximum TPs
3Dh BYTE queue depth
3Eh DWORD pointer to LU_LU_PASSWORD_EXIT routine, FFFFFFFFh=no pswd exit
42h DWORD 00h
46h WORD total length of partner records
for each partner logical unit:
WORD length of this partner logical unit record
WORD 42 offset to mode records
8 BYTEs partner logical unit name (big-endian)
BYTE partner logical unit security capabilities
bit 7: already verified
bit 6: conversation level security
bit 5: session level security
BYTE partner logical unit session limit
WORD partner logical unit maximum MC_SEND_LL
8 BYTEs partner logical unit DLC name (big-endian)
BYTE partner logical unit adapter number
17 BYTEs (counted string) partner logical unit adapter address
WORD total length of mode records
for each mode:
WORD 16 length of this mode record
8 BYTEs mode name (big-endian)
WORD RU_SIZE high bound
WORD RU_SIZE low bound
BYTE mode maximum negotiable session limit
BYTE pacing size for receive
---if verb=2200h (Detach Logical Unit)---
18h 8 BYTEs logical unit ID (big-endian)
20h BYTE 00h
---if verb=2700h (Detach Physical Unit)---
18h BYTE 00h type: hard
01h type: soft
---if verb=2B00h (Activate DLC)---
18h 8 BYTEs DLC name (big-endian)
20h BYTE adapter number
Values for return code:
0000h successful
0001h BAD_TP_ID
0002h BAD_CONV_ID
0003h bad logical unit ID
0008h no physical unit attached
0110h bad state
01B1h BAD_PART_LUNAME
01B2h bad mode name
0201h physical unit already active
0211h logical unit already active
0212h BAD_PART_SESS
0213h BAD_RU_SIZES
0214h BAD_MODE_SESS
0216h BAD_PACING_CNT
0219h EXTREME_RUS
021Ah SNASVCMG_1
0223h SSCP_CONNECTED_LU
0230h invalid change
0243h too many TPs
0272h adapter close failure
0281h GET_ALLOC_BAD_TYPE
0282h unsuccessful
0283h DLC failure
0284h unrecognized DLC
0286h duplicate DLC
0301h SSCP_PU_SESSION_NOT_ACTIVE
0302h data exceeds RU size
0401h invalid direction
0402h invalid type
0403h segment overlap
0404h invalid first character
0405h table error
0406h conversion error
F0010000h APPC disabled
F0020000h APPC busy
F0030000h APPC abended
F0040000h incomplete
Routines defined by LU_LU_PASSWORD_EXIT, CREATE_TP_EXIT, and SYSTEM_LOG_EXIT
pointers are called by pushing the DWORD pointer to the verb on the stack and
then performing a FAR call.
Format of ACCESS_LU_LU_PW verb:
Offset Size Description
00h 12 BYTEs reserved
0Ch WORD 1900h
0Eh 8 BYTEs logical unit ID (big-endian)
16h 8 BYTEs logical unit name (big-endian)
1Eh 8 BYTEs partner logical unit name (big-endian)
26h 17 BYTEs (counted string) partner fully qualified logical unit name
37h BYTE password available (0=no, 1=yes)
38h 8 BYTEs password
Format of CREATE_TP verb:
Offset Size Description
00h 12 BYTEs reserved
0Ch WORD 2300h
0Eh 6 BYTEs 00h
14h DWORD sense code (big-endian)
00000000h Ok
080F6051h SECURITY_NOT_VALID
084B6031h TP_NOT_AVAIL_RETRY
084C0000h TP_NOT_AVAIL_NO_RETRY
10086021h TP_NAME_NOT_RECOGNIZED
10086034h CONVERSATION_TYPE_MISMATCH
10086041h SYNC_LEVEL_NOT_SUPPORTED
18h 8 BYTEs TP ID (big-endian)
20h 8 BYTEs logical unit ID (big-endian)
28h DWORD conversation ID (big-endian)
2Ch BYTE 0 basic conversation, 1 mapped conversation
2Dh BYTE 0 no sync level, 1 confirm
2Eh BYTE reserved
2Fh 65 BYTEs (counted string) transaction program name
70h 6 BYTEs 00h
76h WORD length of ERROR_LOG_DATA to return
78h DWORD pointer to ERROR_LOG_DATA buffer
7Ch 8 BYTEs partner logical unit name (big-endian)
84h 18 BYTEs (counted string) partner fully qualified logical unit name
96h 8 BYTEs mode name (big-endian)
9Eh 12 BYTEs 00h
AAh 11 BYTEs (counted string) password
B5h 11 BYTEs (counted string) user ID
C0h BYTE 0 verification should be performed
1 already verified
Format of SYSLOG verb:
Offset Size Description
00h 12 BYTEs reserved
0Ch WORD 2600h
0Eh 10 BYTEs 00h
18h WORD type (big-endian)
1Ah DWORD subtype (big-endian)
1Eh DWORD pointer to ADDITIONAL_INFO
22h DWORD conversation ID (big-endian)
26h 8 BYTEs TP ID (big-endian)
2Eh 8 BYTEs physical unit or logical unit name (big-endian)
36h WORD length of data
38h DWORD pointer to data
3Ch BYTE 00h
----------6802-------------------------------
INT 68 - APPC/PC - CONNECTION CONTROL
AH = 02h
DS:DX -> control block
Format of control block:
Offset Size Description
00h 12 BYTEs reserved
0Ch WORD verb (action)
0Eh BYTE 1 if MC_ (mapped conversation) form of verb
0 if basic verb
0Fh 5 BYTEs reserved (0)
14h WORD (high byte first) primary return code (see below)
16h DWORD (high byte first) error code (see below)
1Ah 8 BYTEs (high byte first) TP_ID
22h DWORD (high byte first) conversation ID
---if verb=0100h (Allocate or MC_Allocate)---
26h BYTE (MC_Allocate only) 0 basic conversation
1 mapped conversation
27h BYTE 00h SYNC_LEVEL = none
01h SYNC_LEVEL = confirm
28h WORD 0000h
2Ah BYTE 00h RETURN_CONTROL: when session allocated
01h RETURN_CONTROL: immediate
02h RETURN_CONTROL: when session free
2Bh 8 BYTEs 00h
33h 8 BYTEs (high byte first) partner logical unit name
3Bh 8 BYTEs (high byte first) mode name
43h 65 BYTEs (counted string) TP name
84h BYTE 00h security: none
01h security: same
02h security: pgm
85h 11 BYTEs 00h
90h 11 BYTEs (counted string) password
9Bh 11 BYTEs (counted string) user ID
A6h WORD PIP_DATA length
A8h DWORD pointer to PIP_DATA
---if verb=0300h (Confirm or MC_Confirm)---
26h BYTE request to send received (0=no, 1=yes)
---if verb=0400h (Confirmed or MC_Confirmed), no additional fields---
---if verb=0500h (Deallocate or MC_Deallocate)---
26h BYTE 00h
27h BYTE type 0 SYNC_LEVEL
1 FLUSH
2 ABEND_PROC
3 ABEND_SVC
4 ABEND_TIMER
5 ABEND
28h WORD (MC_Deallocate only) length of error log data
2Ah DWORD (MC_Deallocate only) pointer to error log data
---if verb=0600h (Flush or MC_Flush), no additional fields---
---if verb=0700h (Get_Attributes or MC_Get_Attributes)---
26h 8 BYTEs (high byte first) logical unit ID
2Eh BYTE 00h
2Fh BYTE SYNC_LEVEL (0=none, 1=confirm)
30h 8 BYTEs (high byte first) mode name
38h 8 BYTEs (high byte first) own net name
40h 8 BYTEs (high byte first) own logical unit name
48h 8 BYTEs (high byte first) partner logical unit name
50h 18 BYTEs (counted string) partner's fully qualified logical unit name
62h BYTE 00h
63h 11 BYTEs (counted string) user ID
---if verb=0800h (Get_Type)---
26h BYTE type (0=basic conversation, 1=mapped conversation)
---if verb=0900h (Post_on_Receipt)---
26h WORD maximum length
28h BYTE fill (0=buffer, 1=LL)
---if verb=0A00h (Prepare_to_Receive or MC_Prepare_to_Receive)---
26h BYTE type (0=SYNC_LEVEL, 1=FLUSH)
27h BYTE locks (0=short, 1=long)
---if verb=0B00h (Receive_and_Wait or MC_Receive_and_Wait)---
26h BYTE what received
00h data
01h data complete
02h data incomplete
03h confirm
04h confirm send
05h confirm deallocate
06h send
27h BYTE (MC_Receive_and_Wait only) fill (0=buffer, 1=LL)
28h BYTE Request_to_Send_Received (0=no, 1=yes)
29h WORD maximum length
2Bh WORD data length
2Dh DWORD pointer to data
---if verb=0C00h (Receive_Immediate or MC_Receive_Immediate)---
26h BYTE what received
00h data
01h data complete
02h data incomplete
03h confirm
04h confirm send
05h confirm deallocate
06h send
27h BYTE (MC_Receive_Immediate only) fill (0=buffer, 1=LL)
28h BYTE Request_to_Send_Received (0=no, 1=yes)
29h WORD maximum length
2Bh WORD data length
2Dh DWORD pointer to data
---if verb=0E00h (Request_to_Send or MC_Request_to_Send), no other fields---
---if verb=0F00h (Send_Data or MC_Send_Data)---
26h BYTE request to send received (0=no, 1=yes)
27h BYTE 00h
28h WORD data length
2Ah DWORD pointer to data
---if verb=1000h (Send_Error or MC_Send_Error)---
26h BYTE request to send received (0=no, 1=yes)
27h BYTE type (0=program, 1=SVC)
28h DWORD 00h
2Ch WORD (MC_Send_Error only) LOG_DATA length
2Eh DWORD (MC_Send_Error only) pointer to LOG_DATA
---if verb=1200h (Test or MC_Test)---
26h BYTE (MC_Test only) test (0=posted, 1=request_to_send received)
Note: error code has different interpretations for:
0 posted data
1 posted not data (primary return code = 0)
1 bad TP_ID (primary return code = 1)
---if verb=1300h (Wait)---
26h BYTE number of conversations to wait on
Note: error codes have interpretations as for 1200h above
Values for primary return code:
0000h successful
0001h parameter check
0002h state check
0003h allocation error
0005h deallocate abended
0006h deallocate abended program
0007h deallocate abended SVC
0008h deallocate abended timer
0009h deallocate normal return
000Ah data posting blocked
000Bh posting not active
000Ch PROG_ERROR_NO_TRUNC
000Dh PROG_ERROR_TRUNC
000Eh PROG_ERROR_PURGING
000Fh CONV_FAILURE_RETRY
0010h CONV_FAILURE_NO_RETRY
0011h SVC_ERROR_NO_TRUNC
0012h SVC_ERROR_TRUNC
0013h SVC_ERROR_PURGING
0014h unsuccessful
0018h CNOS partner logical unit reject
0019h conversation type mixed
F001h APPC disabled
F002h APPC busy
F003h APPC abended
F004h incomplete
Values for error code:
0001h bad TP ID
0002h bad conversation ID
0004h allocation error, no retry
0005h allocation error, retry
0006h data area crosses segment boundary
0010h bad TPN length
0011h bad CONV length
0012h bad SYNC level
0013h bad security selection
0014h bad return control
0015h SEC_TOKENS too big
0016h PIP_LEN incorrect
0017h no use of SNASVCMG
0018h unknown partner mode
0031h confirm: SYNC_NONE
0032h confirm: bad state
0033h confirm: NOT_LL_BDY
0041h confirmed: bad state
0051h deallocate: bad type
0052h deallocate: flush bad state
0053h deallocate: confirm bad state
0055h deallocate: NOT_LL_BDY
0057h deallocate: log LL_WRONG
0061h flush: not send state
0091h post on receipt: invalid length
0092h post on receipt: not in receive state
0093h post on receipt: bad fill
00A1h prepare to receive:invalid type
00A2h prepare to receive: unfinished LL
00A3h prepare to receive: not in send state
00B1h receive and wait: bad state
00B2h receive and wait: NOT_LL_BDY
00B5h receive and wait: bad fill
00C1h receive immediate: not in receive state
00C4h receive immediate: bad fill
00E1h request to send: not in receive state
00F1h send data: bad LL
00F2h send data: not in send state
0102h send error: log LL wrong
0103h send error: bad type
0121h test: invalid type
0122h test: not in receive state
----------6803-------------------------------
INT 68 - APPC/PC
AH = 03h
DS:DX -> control block (see below)
Format of control block:
Offset Size Description
00h 12 BYTEs reserved
0Ch WORD verb (action)
0Eh 6 BYTEs 0
14h DWORD (high byte first) return code (see AH=01h)
18h WORD 0
1Ah 8 BYTEs (high byte first) logical unit ID
---if verb=2400h (TP Started), control block continues---
22h 8 BYTEs (high byte first) TP ID
---if verb=2800h (Get ALLOCATE), control block continues---
22h BYTE type
00h dequeue
01h test
23h DWORD pointer to CREATE_TP record
---if verb=2A00h (Change Logical Unit). control block continues---
22h DWORD pointer to CREATE_TP_EXIT routine
FFFFFFFFh reject incoming ALLOCATEs
00000000h queue ALLOCATEs
26h DWORD 00000000h
2Ah DWORD pointer to SYSTEM_LOG_EXIT routine, FFFFFFFFh= don't log errors
2Eh DWORD 00000000h
32h BYTE maximum TPs
33h BYTE 00h stop QUEUE_ALLOCATEs
01h resume QUEUE_ALLOCATEs
34h DWORD pointer to LU_LU_PASSWORD_EXIT routine, FFFFFFFFh = no exit
38h DWORD 00000000h
----------6804-------------------------------
INT 68 - APPC/PC
AH = 04h
DS:DX -> control block (see below)
Format of control block:
Offset Size Description
00h 12 BYTEs reserved
0Ch WORD verb (action)
2500h TP_ENDED
2900h TP_VALID
0Eh 6 BYTEs 0
14h DWORD (high byte first) return code (see AH=01h)
18h WORD 0
1Ah 8 BYTEs (high byte first) TP_ID
22h DWORD -> CREATE_TP record (only if verb = 2900h)
----------6805-------------------------------
INT 68 - APPC/PC - TRANSFER MSG DATA
AH = 05h
DS:DX -> control block (see below)
Format of control block:
Offset Size Description
00h 12 BYTEs reserved
0Ch WORD 1C00h
0Eh BYTE 00h user defined
01h NMVT
02h alert subvectors
03h PDSTATS subvectors
0Fh 5 BYTEs 0
14h DWORD (high byte first) return code (see AH=01h)
18h 12 BYTEs 0
24h BYTE if bit 0 clear, add correlation subvector
if bit 1 clear, add product set ID subvector
if bit 2 clear, do SYSLOG
if bit 3 clear, send SSCP_PU_SESSION
25h BYTE 0
26h WORD length of data
28h N BYTEs data
----------6806-------------------------------
INT 68 - APPC/PC - CHANGE NUMBER OF SESSIONS
AH = 06h
DS:DX -> control block (see below)
Format of control block:
Offset Size Description
00h 12 BYTEs reserved
0Ch WORD 1500h
0Eh 6 BYTEs 0
14h WORD (high byte first) primary return code (see AH=02h)
16h DWORD (high byte first) secondary return code (see below, AH=01h)
1Ah 8 BYTEs (high byte first) logical unit ID
22h 8 BYTEs blanks
2Ah 8 BYTEs (high byte first) partner logical unit name
32h 8 BYTEs (high byte first) mode name
3Ah BYTE bit 7: use MODE_NAME_SELECT_ALL rather than MODE_NAME
bit 6: set negotiable values
3Bh BYTE partner logical unit mode session limit
3Ch BYTE minimum CONWINNERS_SOURCE
3Dh BYTE maximum CONWINNERS_TARGET
3Eh BYTE automatic activation
3Fh BYTE 0
40h BYTE bit 7: drain target
bit 6: drain source
bit 5: target responsible, not source
Values for secondary return code (see also AH=01h):
0000h accepted
0001h negotiated
0003h bad logical unit ID
0004h allocation failure, no retry
0005h allocation failure, retry
0151h can't raise limits
0153h all modes must reset
0154h bad SNASVCMG limits
0155h minimum greater than total
0156h mode closed (prim return code = 1)
CNOS mode closed (prim return code = 18h)
0157h bad mode name (prim return code = 1)
CNOS bad mode name (prim return code = 18h)
0159h reset SNA drains
015Ah single not SRC response
015Bh bad partner logical unit
015Ch exceeds maximum allowed
015Dh change SRC drains
015Eh logical unit detached
015Fh CNOS command race reject
----------6807-------------------------------
INT 68 - APPC/PC - PASSTHROUGH
AH = 07h
DS:DX -> control block (format depends on application subsystem)
SeeAlso: AH=FFh
----------68FA-------------------------------
INT 68 - APPC/PC - ENABLE/DISABLE APPC
AH = FAh
AL bit 0 = 0 enable
1 disable
----------68FB-------------------------------
INT 68 - APPC/PC - CONVERT
AH = FBh
DS:DX -> control block (see below)
Format of control block:
Offset Size Description
00h 12 BYTEs reserved
0Ch WORD 1A00h
0Eh 6 BYTEs 0
14h DWORD (high byte first) return code
18h BYTE conversion
00h ASCII to EBCDIC
01h EBCDIC to ASCII
19h BYTE character set
00h AE
01h A
02h G
1Ah WORD length of string to convert
1Ch DWORD pointer to source
20h DWORD pointer to target
----------68FC-------------------------------
INT 68 - APPC/PC - ENABLE/DISABLE MESSAGE TRACING
AH = FCh
AL = 00h disable tracing
= 01h enable tracing
DX = number of bytes to keep (0=all)
SeeAlso: AH=FDh
----------68FD-------------------------------
INT 68 - APPC/PC - ENABLE/DISABLE API VERB TRACING
AH = FDh
AL = 00h disable tracing
01h enable tracing
SeeAlso: AH=FCh,AH=FEh
----------68FE-------------------------------
INT 68 - APPC/PC - SET TRACE DESTINATION
AH = FEh
AL = trace destinations
bit 0 storage (DS:DX -> trace stats record)
bit 1 display
bit 2 file (trace written to file OUTPUT.PC)
bit 3 printer
SeeAlso: AH=FDh
Format of Trace Statistics Record:
Offset Size Description
00h DWORD pointer to storage trace buffer
04h WORD max number of 80-byte records in trace
06h WORD (high-order byte first!) current record number (must init to 0)
08h DWORD (high-order byte first!) number of records written (init to 0)
0Ch DWORD reserved
Note: do not move record while trace is active
----------68FF-------------------------------
INT 68 - APPC/PC - SET PASSTHROUGH
AH = FFh
DS:DX -> passthrough exit routine
SeeAlso: AH=07h
----------69---------------------------------
INT 69 - Zenith AT BIOS - ???
called by INT 09 handler
----------690100-----------------------------
INT 69 - DECnet DOS CTERM - INSTALLATION CHECK
AX = 0100h
Return: AL = FFh if present
SeeAlso: AX=010Fh
----------690101-----------------------------
INT 69 - DECnet DOS CTERM - SEND BYTE
AX = 0101h
BL = character
DX = session handle
Return: AH >= 80h on error
SeeAlso: AX=0102h
----------690102-----------------------------
INT 69 - DECnet DOS CTERM - READ BYTE
AX = 0102h
DX = session handle
Return: AH >= 80h on error
AH < 80h if successful
AL = character
SeeAlso: AX=0101h
----------690103-----------------------------
INT 69 - DECnet DOS CTERM - STATUS
AX = 0103h
DX = session handle
Return: AH status flags
bit 7 session has been aborted
6 DECnet error
1 trace data available
0 receive data available
AL = reason code if DECnet error
00h normal disconnect
01h unknown message from host
02h protocol violation from host
03h could not process the initiate message
04h error receiving message from host
05h error sending message to host
06h error checking for message from host
07h remote system does not support CTERM
08h remote system does not support correct protocol version
09h did not receive BIND message from host
0Ah could not send BIND message to host
0Bh no more sessions available
0Ch session does not exist
0Dh not enough memory to complete operation
0Eh connection has broken
SeeAlso: AX=0104h
----------690104-----------------------------
INT 69 - DECnet DOS CTERM - DECnet STATUS
AX = 0104h
DX = session handle
Return: AX = reason code (see AX=0103h)
Note: use this call when AX=0103h returns a DECnet error
SeeAlso: AX=0103h
----------690105-----------------------------
INT 69 - DECnet DOS CTERM - OPEN SESSION
AX = 0105h
DS:BX -> ASCIZ node name
ES:DX -> buffer for session control block (see INT 6A/AH=D0h)
Return: AX <= 0 on error
AX > 0 session handle
SeeAlso: AX=0103h,AX=0106h,AX=010Ah
----------690106-----------------------------
INT 69 - DECnet DOS CTERM - CLOSE SESSION
AX = 0106h
DX = session handle
Return: AH = 00h good close
other error code (see AX=0103h)
SeeAlso: AX=0103h,AX=0105h
----------69010A-----------------------------
INT 69 - DECnet DOS CTERM - GET SESSION CONTROL BLOCK SIZE
AX = 010Ah
Return: AX = length of session control block in bytes
SeeAlso: AX=0105h
----------69010B-----------------------------
INT 69 - DECnet DOS CTERM - GET DECnet SOCKET
AX = 010Bh
DX = session handle
Return: AX > 0 DECnet socket for the session
= 0 no match for handle
----------69010F-----------------------------
INT 69 - DECnet DOS CTERM - DEINSTALL CTERM
AX = 010Fh
Return: AH = 00h succesful uninstall
other error code
Note: CTERM must have been the last TSR loaded in order to deinstall it
SeeAlso: AX=0100h
----------690A-------------------------------
INT 69 - DECnet DOS 2.1+ - DATA LINK LAYER
AH = 0Ah
AL = function
00h initialize
01h open portal
02h close portal
03h enable multicast address
04h disable multicast address
05h transmit
06h request transmit buffer
07h deallocate transmit buffer
08h read channel status
09h read datalink portal list
0Ah read information about a datalink portal
0Bh read and/or clear counters
0Ch request to boot from a network server
0Dh enable Ethernet channel
0Eh disable Ethernet channel
0Fh start MOP/send a System ID message
10h stop MOP
11h get DECPARM
12h set DECPARM
13h external loopback
ES:BX -> Datalink Communication Block
Return: AX = status
00h successful
01h hardware failed to initialize
02h channel state was not off (must be off to execute that command)
03h channel state is off (must be on to execute that command)
04h address not set
05h hardware missing
06h buffer too small
07h no more buffers available
08h no more resources available
09h promiscuous receiver active
0Ah non exclusive
0Bh unrecognized portal
0Ch protocol type in use
0Dh not a valid Multicast address
0Eh outstanding calls
0Fh hardware doesn't support receiving bad frames
10h none outstanding
11h no events
12h broken
13h buffer quota exceeded
14h already initialized
15h loopback failure
SeeAlso: INT 6D"DECnet"
Format of Datalink Communication Block
Offset Type Description
00h WORD portal ID
02h 6 BYTEs source address
08h 6 BYTEs destination address
0Eh DWORD buffer pointer
12h WORD buffer length
14h WORD operation
16h BYTE pad flag (used on open)
00h no pad
01h pad
17h BYTE mode flag (used on open)
00h 802.3
01h Ethernet
02h promiscuous
18h DWORD line status change function
1Ch DWORD received data function
20h DWORD transmitted data function
24h BYTE maximum outstanding transmits/receives
25h 2 BYTEs protocol type
27h WORD buffers lost
----------694001-----------------------------
INT 69 - 10NET v5.0 - SYSSVC.COM - ???
AX = 4001h
Return: CF clear
AX = 0000h
ES:SI -> ???
Note: INT 69 is the default, and may be set to any interrupt from 60h-7Fh;
the signature "SYSV" immediately before the interrupt handler serves
as the installation check
SeeAlso: AX=4002h
----------694002-----------------------------
INT 69 - 10NET v5.0 - SYSSVC.COM - ???
AX = 4002h
???
Return: ???
Note: INT 69 is the default, and may be set to any interrupt from 60h-7Fh;
the signature "SYSV" immediately before the interrupt handler serves
as the installation check
----------694101-----------------------------
INT 69 - 10NET v5.0 - SYSSVC.COM - ???
AX = 4101h
Return: CF clear
ES:SI -> ???
SeeAlso: AX=4102h,AX=4103h,AX=4104h
----------694102-----------------------------
INT 69 - 10NET v5.0 - SYSSVC.COM - ???
AX = 4102h
???
Return: ???
----------694103-----------------------------
INT 69 - 10NET v5.0 - SYSSVC.COM - ???
AX = 4103h
???
Return: ???
----------694104-----------------------------
INT 69 - 10NET v5.0 - SYSSVC.COM - ???
AX = 4104h
???
Return: ???
----------6942-------------------------------
INT 69 - 10NET v5.0 - SYSSVC.COM - ???
AH = 42h
AL = function (01h-14h)
???
Return: ???
----------6943-------------------------------
INT 69 - 10NET v5.0 - SYSSVC.COM - ???
AH = 43h
AL = function (01h-05h)
???
Return: ???
----------6944-------------------------------
INT 69 - 10NET v5.0 - SYSSVC.COM - ???
AH = 44h
AL = function (01h-03h)
???
Return: ???
----------6949-------------------------------
INT 69 - 10NET v5.0 - SYSSVC.COM - BUG
AH = 49h
Note: due to a fencepost error, this function branches to hyperspace
SeeAlso: AX=4001h,AH=FFh
----------696996-----------------------------
INT 69 - ISR.COM v1.00 - SPECIFY INTERRUPT HANDLER
AX = 6996h
DS:DX -> interrupt handler or 0000h:0000h to disable
Return: AX = 9669h
Notes: ISR (Interrupt Service Reflector) is a TSR by Rich Bono which permits
a program to provide hardware interrupt handlers even while being
debugged with a debugger that swaps interrupt vectors during
debugging.
the interrupt vector which is to be reflected is set at installation
time and cannot be changed
----------69FF-------------------------------
INT 69 - 10NET v5.0 - SYSSVC.COM - SIGNAL SYSTEM ERROR
AH = FFh
Return: never???
Notes: displays "System Error" message and register dump, then halts system
INT 69 is the default, and may be set to any interrupt from 60h-7Fh;
the signature "SYSV" immediately before the interrupt handler serves
as the installation check
SeeAlso: AX=4001h,AH=49h
----------6A---------------------------------
INT 6A - OPTHELP.COM
Notes: OPTHELP is an optionally-resident help system for SLR Systems's OPTASM
assembler
may be configured to use any interrupt from 60h to 7Fh (default 6Ah)
----------6A---------------------------------
INT 6A - DECnet DOS - LOCAL AREA TRANSPORT PROGRAM
Note: the installation check consists of testing for a signature area
immediately preceding the interrupt handler
SeeAlso: INT 6B"DECnet",INT 6D"DECnet"
Format of signature area:
Offset Size Description
-5 BYTE major version number
-4 BYTE minor version number
-3 3 BYTEs signature (ASCII "LAT")
----------6A01--DHFF-------------------------
INT 6A - DECnet DOS LOCAL AREA TRANSPORT - SEND BYTE
AH = 01h
DH = FFh
AL = character
DL = handle
Return: AH >= 80h on error
SeeAlso: AH=02h
----------6A02--DHFF-------------------------
INT 6A - DECnet DOS LOCAL AREA TRANSPORT - READ BYTE
AH = 02h
DH = FFh
DL = handle
Return: AH < 80h if successful
AL = character
AH >= 80h on error
SeeAlso: AH=01h
----------6A03--DHFF-------------------------
INT 6A - DECnet DOS LOCAL AREA TRANSPORT - STATUS
AH = 03h
DH = FFh
DL = handle
Return: AH = status flags
bit 5 transmit buffer empty
3 session in start state
2 session not active
1 unable to queue transmit data
0 receive data available
----------6AD0--DHFF-------------------------
INT 6A - DECnet DOS LOCAL AREA TRANSPORT - OPEN SESSION
AH = D0h
DH = FFh
AL = FFh no password
= 0Fh password at ES:DI
ES:BX -> LAT session control block (see below)
ES:DI -> 16-byte blank-padded password
Return: AH = 00h success
DL = handle
SeeAlso: AX=D000h
Format of LAT Session Control Block:
Offset Size Description
00h 18 BYTEs service name
12h 18 BYTEs node name (future use)
24h 18 BYTEs port name (future use)
36h DWORD -> session stopped post routine
3Ah DWORD -> service table overflow post routine
3Eh DWORD -> transmit post routine
42h DWORD -> receive post routine
46h WORD session status
04h circuit failure
08h stop slot received
48h WORD slot state (LAT driver use)
4Ah WORD local credits (LAT driver use)
4Ch DWORD -> VCB (LAT driver use)
50h WORD backward slot (LAT driver use)
52h WORD forward slot (LAT driver use)
54h WORD remote slot ID (LAT driver use)
56h WORD local slot ID (LAT driver use)
58h WORD slot byte count (LAT driver use)
5Ah BYTE remote credits (LAT driver use)
5Bh 255 BYTEs transmitted data slot
15Ah BYTE number of receive data slots (4 recommended)
15Bh BYTE number of occupied slots
15Ch BYTE index of next receive slot to use
15Dh BYTE index of current receive slot
15Eh WORD pointer to first received character
160h N WORDs pointers to receive slots (buffers); each is 259 bytes
Note: set post routines to 0000h:0000h if polled operation will be used
----------6AD000DHFF-------------------------
INT 6A - DECnet DOS LOCAL AREA TRANSPORT - CLOSE SESSION
AX = D000h
DH = FFh
DL = handle
Return: AX = 0000h successful
= 0001h no such session
= 0002h session not running, try again later
SeeAlso: AH=D0h
----------6AD100DHFF-------------------------
INT 6A - DECnet DOS LOCAL AREA TRANSPORT - SEND BREAK
AX = D100h
DH = FFh
DL = handle
Return: AX = 0000h if successful
AH bit 7 set if unable to send break
----------6AD300DHFF-------------------------
INT 6A - DECnet DOS LOCAL AREA TRANSPORT - RESET LAT COUNTERS
AX = D300h
DH = FFh
SeeAlso: AX=D400h
----------6AD400DHFF-------------------------
INT 6A - DECnet DOS LOCAL AREA TRANSPORT - COPY LAT COUNTERS
AX = D400h
DH = FFh
CX = buffer size
ES:BX -> buffer for LAT counters
Return: AX = 0000h counters copied into buffer
= FFFFh buffer too small
SeeAlso: AX=D300h
----------6AD500DHFF-------------------------
INT 6A - DECnet DOS LOCAL AREA TRANSPORT - GET NEXT LAT SERVICE NAME
AX = D500h
DH = FFh
ES:BX -> 17-byte buffer for name
Return: AH = 00h if successful
ES:BX buffer filled
AX = FFFFh if end of table or no name available
Notes: use this function to get the names of the hosts on the network
successive calls are necessary to get all names
SeeAlso: AX=D600h
----------6AD600DHFF-------------------------
INT 6A - DECnet DOS LOCAL AREA TRANSPORT - LAT SERVICE TABLE RESET
AX = D600h
DH = FFh
Return: AX = number of service table entries
BX = 0000h service table has not overflowed
= FFFFh service table has overflowed
SeeAlso: AX=D500h
---------------------------------------------
INT 6B - DECnet DOS - PORT DRIVER
Note: the installation check consists of testing for a signature area
immediately preceding the interrupt handler
SeeAlso: INT 6A"DECnet",INT 6C"DECnet"
Format of signature area:
Offset Size Description
-5 BYTE major version number
-4 BYTE minor version number
-3 3 BYTEs signature (ASCII "PDV")
----------6B0000-----------------------------
INT 6B - Novell NASI/NACS, Ungermann-Bass Net One SERIAL I/O - BUFFERED WRITE
AX = 0000h
CX = length
ES:BX -> buffer
Return: CX = number of bytes written
Note: also supported by NPC NCSI
SeeAlso: AX=0100h,AH=18h,INT 14/AH=19h
----------6B0100-----------------------------
INT 6B - Novell NASI/NACS, Ungermann-Bass Net One SERIAL I/O - BUFFERED READ
AX = 0100h
CX = length of buffer
ES:BX -> buffer
Return: CX = number of bytes read
Note: also supported by NPC NCSI
SeeAlso: AX=0000h,AH=19h,INT 14/AH=18h,INT 14/AX=FF02h
----------6B02-------------------------------
INT 6B - Novell NASI/NACS, Ungermann-Bass Net One SERIAL I/O - INSTALL CHECK
AH = 02h
AL nonzero
Return: AL = 00h if present and OK
Note: also supported by NPC NCSI
SeeAlso: AX=0700h
----------6B0600-----------------------------
INT 6B - Novell NASI/NACS, Ungermann-Bass Net One SERIAL I/O - CONTROL
AX = 0600h
CX = command
02h send break
04h disconnect
06h hold
Note: also supported by NPC NCSI
----------6B0700-----------------------------
INT 6B - Novell NASI/NACS, Ungermann-Bass Net One SERIAL I/O - GET STATUS
AX = 0700h
Return: CH <> 00h if connection active
Note: also supported by NPC NCSI
SeeAlso: AH=02h,AH=10h
----------6B10-------------------------------
INT 6B - NPC NCSI EXTENDED SERIAL I/O - GET STATUS
AH = 10h
???
Return: ???
SeeAlso: AX=0700h,AH=12h,AH=1Fh
----------6B11-------------------------------
INT 6B - NPC NCSI EXTENDED SERIAL I/O - ALLOCATE A VIRTUAL CIRCUIT
AH = 11h
???
Return: ???
SeeAlso: AH=12h,AH=15h,AH=16h,AH=17h,AH=18h
----------6B12-------------------------------
INT 6B - NPC NCSI EXTENDED SERIAL I/O - VIRTUAL CIRCUIT STATUS
AH = 12h
???
Return: ???
SeeAlso: AH=10h,AH=15h,AH=1Ah,AH=1Bh,AH=1Fh
----------6B13-------------------------------
INT 6B - NPC NCSI EXTENDED SERIAL I/O - SET/RETRIEVE REQUEST/REPLY SERVICE NAME
AH = 13h
???
Return: ???
SeeAlso: AH=14h,AH=15h
----------6B14-------------------------------
INT 6B - NPC NCSI EXTENDED SERIAL I/O - SET/RETRIEVE SERVICE ADDRESS
AH = 14h
???
Return: ???
SeeAlso: AH=13h,AH=15h,AH=21h
----------6B15-------------------------------
INT 6B - NPC NCSI EXTENDED SERIAL I/O - SET/RETRIEVE VIRTUAL CIRCUIT CONFIG
AH = 15h
???
Return: ???
SeeAlso: AH=13h,AH=14h
----------6B16-------------------------------
INT 6B - NPC NCSI EXTENDED SERIAL I/O - LOG AND/OR INITIALIZE VIRTUAL CIRCUIT
AH = 16h
???
Return: ???
SeeAlso: AH=11h,AH=12h,AH=17h
----------6B17-------------------------------
INT 6B - NPC NCSI EXTENDED SERIAL I/O - DISCONNECT A VIRTUAL CIRCUIT
AH = 17h
???
Return: ???
SeeAlso: AH=11h,AH=16h
----------6B18-------------------------------
INT 6B - NPC NCSI EXTENDED SERIAL I/O - WRITE DATA ON A VIRTUAL CIRCUIT
AH = 18h
???
Return: ???
SeeAlso: AX=0000h,AH=12h,AH=19h
----------6B19-------------------------------
INT 6B - NPC NCSI EXTENDED SERIAL I/O - READ DATA ON A VIRTUAL CIRCUIT
AH = 19h
???
Return: ???
SeeAlso: AX=0100h,AH=12h,AH=18h
----------6B1A-------------------------------
INT 6B - NPC NCSI EXTENDED SERIAL I/O - RECEIVE STATUS
AH = 1Ah
???
Return: ???
SeeAlso: AH=12h,AH=1Bh
----------6B1B-------------------------------
INT 6B - NPC NCSI EXTENDED SERIAL I/O - TRANSMIT STATUS
AH = 1Bh
???
Return: ???
SeeAlso: AH=12h,AH=1Ah
----------6B1C-------------------------------
INT 6B - NPC NCSI EXTENDED SERIAL I/O - RECEIVE BUFFER CONTROL
AH = 1Ch
???
Return: ???
SeeAlso: AH=1Dh,AH=1Eh
----------6B1D-------------------------------
INT 6B - NPC NCSI EXTENDED SERIAL I/O - TRANSMIT BUFFER CONTROL
AH = 1Dh
???
Return: ???
SeeAlso: AH=1Ch,AH=1Eh
----------6B1E-------------------------------
INT 6B - NPC NCSI EXTENDED SERIAL I/O - ISSUE CONTROL REQUEST
AH = 1Eh
???
Return: ???
SeeAlso: AH=1Ch,AH=1Dh
----------6B1F-------------------------------
INT 6B - NPC NCSI EXTENDED SERIAL I/O - EXTERNAL STATUS
AH = 1Fh
???
Return: ???
SeeAlso: AH=10h,AH=12h
----------6B21-------------------------------
INT 6B - NPC NCSI EXTENDED SERIAL I/O - QUERY NAME SERVICE
AH = 21h
???
Return: ???
SeeAlso: AH=14h
----------6B6B-------------------------------
INT 6B - Tandy SCHOOLMATE PLUS - API
AH = 6Bh
AL = E0h to FFh
----------6B---------------------------------
INT 6B - VIRUS - "Saddam" - ???
SeeAlso: INT 21/AX=FFFFh,INT 61"VIRUS",INT 70"VIRUS"
----------6C---------------------------------
INT 6C - system resume vector (CONVERTIBLE)
----------6C---------------------------------
INT 6C - DOS 3.2 Realtime Clock update
----------6C---------------------------------
INT 6C - DECnet DOS network scheduler
Notes: the installation check consists of testing for a signature area
immediately preceding the interrupt handler
also supported by DEC Pathworks for DOS
SeeAlso: INT 6B"DECnet",INT 6D"DECnet",INT 6E"DECnet"
Format of signature area:
Offset Size Description
-5 BYTE major version number
-4 BYTE minor version number
-3 3 BYTEs signature (ASCII "SCH")
----------6D---------------------------------
INT 6D - VGA - internal
Note: used by IBM, Paradise, Video7, and NCR
----------6D---------------------------------
INT 6D - ATI VGA Wonder - VIDEO BIOS ENTRY POINT
points at the original INT 10 entry point set up by the ATI BIOS
SeeAlso: INT 10
----------6D---------------------------------
INT 6D - DECnet DOS (before 2.1) - DATA LINK LAYER PROGRAM
AH = function
???
Return: ???
Note: the installation check consists of testing for a signature area
immediately preceding the interrupt handler
SeeAlso: INT 69/AH=0Ah,INT 6C"DECnet",INT 6E"DECnet"
Format of signature area:
Offset Size Description
-5 BYTE major version number
-4 BYTE minor version number
-3 3 BYTEs signature (ASCII "SCH")
----------6E---------------------------------
INT 6E - DECnet DOS - DECnet NETWORK PROCESS API
Notes: this is the main DECnet DOS access, and is described in Digital manual
AA-EB46B-TV ("DECnet-DOS Programmer's Reference Manual")
there is a signature/data area immediately prior to the interrupt
handler which may be used as an installation check
Format of signature area:
Offset Size Description
-5 BYTE major version number
-4 BYTE minor version number
-3 3 BYTEs signature (ASCII "DNP")
----------6F22--BP0012-----------------------
INT 6F - HP ES-12 EXTENDED BIOS - READ CMOS MEMORY
AH = 22h
BP = 0012h
BL = address of CMOS byte to read
Return: AH = status
AL = byte read
BP, DS destroyed
SeeAlso: BP=0012h/AH=24h
----------6F24--BP0012-----------------------
INT 6F - HP ES-12 EXTENDED BIOS - WRITE CMOS MEMORY
AH = 24h
BP = 0012h
BL = address of CMOS byte to write
AL = new value
Return: AH = status
BP, DS destroyed
SeeAlso: BP=0012h/AH=22h
----------6F---------------------------------
INT 6F - Novell NetWare - PCOX API (3270 PC terminal interface)
----------6F00-------------------------------
INT 6F - 10NET - LOGIN
AH = 00h
DS:DX -> login record (see below)
Return: CL = security level
AX = status (see below)
SeeAlso: AH=01h,INT 21/AX=4402h"10MEMMGR"
Format of login record:
Offset Size Description
00h 8 BYTEs user name
08h 8 BYTEs password
10h 12 BYTEs name of SuperStation
Values for status:
0000h successful
01FFh time out on response
02FFh network (hardware) error
03FFh invalid password
04FFh local resource not available
05FFh server resource not available
06FFh already logged in under different name
07FFh login security failure (node)
08FFh not logged in
09FFh position calc error
0AFFh receive subfunction not = send subfunction (i.e. read, write)
0BFFh request function not in range
0CFFh no more server file handle entries left
0DFFh no more shared file table entries left
0EFFh no more user file handle entries left
0FFFh chat permit not on
10FFh not a server on request
11FFh no transporter board error
12FFh time out on send
13FFh item not found (spool item not on queue)
14FFh DOS access incompatible
15FFh record already locked
16FFh invalid parameter
17FFh record lock time out error
18FFh currently spooling to named device
19FFh dropped receive message (throttle)
1AFFh open sharing violation
1BFFh no more tuf entries left
1CFFh not file owner on open
1DFFh read security not passed
1EFFh write security not passed
1FFFh group security not passed
20FFh security file failure
21FFh activity file failure
22FFh spool cntrl file failure
23FFh device not mounted (spooling)
24FFh spool file has not been terminated
25FFh device not mounted or is not being shared
26FFh duplicate node id
27FFh file not found error
28FFh no more files
29FFh unknown internal system error
2AFFh print queue is full or corrupted
2BFFh invalid function
2CFFh invalid handle
2DFFh too many files opened
2EFFh path not found
2FFFh named file is active
/* I've gotten one submission which says FFxxh, and another with xxFFh */
/* I don't know which way around these should be, does somebody else know? */
FF01h timeout
FF02h network error
FF03h invalid password
FF04h no local buffer
FF05h superstation not available
FF06h node already logged in
FF07h login not valid from this node
FF08h node ID already in use
FF16h invalid parameter (bad length, invalid node ID, etc)
FF17h record locked by another user
FF18h sent message has been dropped
----------6F01-------------------------------
INT 6F - 10NET - LOGOFF
AH = 01h
DS:DX -> superstation ID or nulls (12 bytes)
Return: CX = number of files closed
AX = status (see AH=00h)
FF08h superstation ID not already logged in
SeeAlso: AH=00h
----------6F02-------------------------------
INT 6F - 10NET - STATUS OF NODE
AH = 02h
DS:DX -> 512-byte status record (see below)
Return: CF set on error
AX = error code (see AH=00h)
CF clear if successful
Format of node status record:
Offset Size Description
00h 8 BYTEs user name (0 if none)
08h BYTE station type
00h workstation
01h superstation
02h gateway station
03h gateway active
04h logged into multiple superstations
05h reserved
09h 24 BYTEs list of superstations logged into more than one superstation
21h 12 BYTEs node ID
2Dh WORD message count for this station (send for user node, receive for
superstations)
---for superstations only---
2Fh WORD drives allocated (bit 0=A:, bit 1=B:,...)
31h BYTE user service flag
bit 7: gate
6: print permit on
4: SUBMIT is on
3: mail waiting for node
2: calendar waiting for you
1: news waiting for you
0: mail waiting for you
32h BYTE printers allocated (bit 0=LPT1,...)
33h BYTE number of unprinted spool files
34h BYTE number of opened files
35h BYTE number of logged on nodes
36h BYTE primary drive (1=A:)
37h BYTE reserved
38h N BYTEs list of logged on node IDs (each 12 bytes, max 37 IDs)
1F4h 3 BYTEs time: sec/min/hrs
1F7h 3 BYTEs date: day/mon/year-1980
----------6F03-------------------------------
INT 6F - 10NET - GET ADDRESS OF CONFIGURATION TABLE
AH = 03h
DS:DI -> node ID (optional)
Return: ES:BX -> configuration table
SeeAlso: AH=13h
Format of configuration table:
Offset Size Description
-41 WORD local device table address
-39 WORD extended network error mapping table address
-37 WORD shared device table address
-35 WORD mounted device table address
-33 BYTE receive buffer counter
-32 BYTE collect buffer counter
-31 WORD TUF address
-29 BYTE enable flag
-28 BYTE FCB keep flag
-27 WORD reserved
---up to here, 10NET v3.3---
-25 WORD count of dropped Send6F
-23 WORD buffer start address
-21 WORD comm driver base address
-19 WORD send/receive retry count
-17 BYTE number of 550ms loops before timeout
-16 WORD UFH address
-14 WORD CDIR address
-12 WORD LTAB address
-10 WORD SFH address
-8 WORD FTAB address
-6 WORD RLTAB address
-4 WORD SMI address
-2 WORD NTAB address
00h WORD address of first CT_DRV
02h BYTE number of DRV entries
03h 8 BYTEs login name
0Bh 12 BYTEs node ID (blank-padded)
17h 6 BYTEs node address
1Dh BYTE flag
1Eh BYTE CT_CFLG (chat permit)
bit 1: sound bell
bit 0: CHAT permit
1Fh BYTE CT_PSFLG
bit 5: PRINT permit
bit 4: KB initiated
bit 3: CHAT called FOXPTRM
bit 2: SUBMIT active
bit 1: SUBMIT received
bit 0: SUBMIT permit
20h BYTE in 10Net flag
21h WORD receive message count
23h WORD send message count
25h WORD retry count
27h WORD failed count
29h WORD driver errors
2Bh WORD dropped responses/CHATs
2Dh 9 BYTEs LIST ID/NTAB address (3 entries--LPT1-3)
36h 6 BYTEs AUX ID/NTAB address (2 entries--COM1-2)
3Ch BYTE active CB channel
3Dh BYTE received 6F messages on queue
3Eh 9 BYTEs activity counters for channels 1-9
---beyond here, 10NET v3.3---
47h BYTE bit 0 = RS232 gate
1 = Send6F gate (user set)
48h DWORD pointer into gate (user set)
4Ch DWORD pointer into 10Net send
50h N WORDs addresses of timer blocks
----------6F04-------------------------------
INT 6F - 10NET - SEND
AH = 04h
DS:BX -> record
12 BYTEs receiving node's ID
if first byte has high-order bit set, message is
directed to the CT_RGATE vector at the receiver
if second byte is 00h, first byte is taken as a CB
channel number and delivered to all nodes on same
channel
WORD length of data at DX
DS:DX -> data (max 1024 bytes)
Return: CF set on error
AX = error code (see AH=00h)
CF clear if successful
SeeAlso: AH=05h
----------6F05-------------------------------
INT 6F - 10NET - RECEIVE
AH = 05h
CX = number of seconds before timeout
DS:DX -> receive buffer (see below)
Return: CF set on error
AX = error code (see AH=00h)
CF clear if successful
AH = FEh if dequeued message is a CB message
SeeAlso: AH=04h
Format of receive buffer:
Offset Size Description
00h 12 BYTEs sending node's ID
0Ch WORD length of message
0Eh N BYTEs message (maximum 1024 bytes)
----------6F07-------------------------------
INT 6F - 10NET - LOCK HANDLE
AH = 07h
BX = file handle
CX:DX = starting offset in file
SI = record length
Return: CF set on error
AX = error code (see also AH=00h)
0002h file not found
CF clear if successful
SeeAlso: AH=08h,INT 21/AH=5Ch
----------6F08-------------------------------
INT 6F - 10NET - UNLOCK HANDLE
AH = 08h
BX = file handle
AL = mode
00h unlock all
01h unlock record at CX:DX
Return: CF set on error
AX = error code (see also AH=00h)
0002h file not found
CF clear if successful
SeeAlso: AH=07h,INT 21/AH=5Ch
----------6F09-------------------------------
INT 6F - 10NET - SUBMIT
AH = 09h
DS:BX -> submit record (see below)
Format of submit record:
Offset Size Description
00h 12 BYTEs destination node ID (must be logged in)
0Ch WORD length+2 of following 'command line' text
0Eh N BYTEs command line text (<=100 bytes), system adds CR
----------6F0A-------------------------------
INT 6F - 10NET - CHAT
AH = 0Ah
DS:BX -> control parameters (see below)
DS:DX -> chat message (see below)
Format of control parameters:
Offset Size Description
00h 8 BYTEs sender ID, defaults to node's userID if nulls
08h 8 BYTEs destination user ID, 'EVERYONE' may be used
10h 12 BYTEs destination node ID
Format of chat message:
Offset Size Description
00h WORD length+2 of following text
02h N BYTEs text, max 101 bytes
----------6F0B-------------------------------
INT 6F - 10NET - LOCK SEMAPHORE, RETURN IMMEDIATELY
AH = 0Bh
AL = drive number or 0
ES:SI = Ethernet address or 0
DS:BX -> 31-byte ASCIZ semaphore name
Return: AL = status
00h successful
01h semaphore currently locked
02h server not responding
03h invalid semaphore name
04h semaphore list is full
05h invalid drive ID
06h invalid Ethernet address
07h not logged in
08h write to network failed
09h semaphore already logged in this CPU
Note: same as INT 60/AH=12h
SeeAlso: AH=0Ch,INT 60/AH=12h
----------6F0C-------------------------------
INT 6F - 10NET - UNLOCK SEMAPHORE
AH = 0Ch
AL = drive number or 0
ES:SI = Ethernet address or 0
DS:BX -> 31-byte ASCIZ semaphore name
Return: AL = status (see also AH=0Bh)
01h semaphore not locked
Note: same as INT 60/AH=13h
SeeAlso: AH=0Bh,INT 60/AH=13h
----------6F0D-------------------------------
INT 6F - 10NET - WHO
AH = 0Dh
AL = type code
01h return superstations only
02h return non-superstations only
otherwise return all
CX = length of data
DS:DX -> array of records to be filled (see below)
Return: CL = number of records returned (responding stations)
Format of station record:
Offset Size Description
00h 12 BYTEs node ID
0Ch BYTE flags
bit 1 = workstation
2 = superstation
3 = xgate
4 = active gate
---if AL = 01h---
0Dh BYTE version number
WORD level number of 10Net software in responding node
---if AL = 02h---
0Dh 8 BYTEs user ID
15h BYTE version number
16h WORD level number
----------6F0E-------------------------------
INT 6F - 10NET - SPOOL/PRINT
AH = 0Eh
DS:DX -> spool/print record (see below)
Return: CF set on error
AX = error code (see also AH=00h)
FF17h device not mounted
FF18h already spooling to named device
CF clear if successful
Format of Spool/Print record:
Offset Size Description
00h WORD operation code
00h initiate spool
01h abort print
02h close spool
03h delete spool
04h print
05h get report info
06h set chat template
07h queue
08h return queue
09h queue non-spooled file for printing
02h 11 BYTEs file name in FCB format
---if operation code = 00h or 06h---
0Dh BYTE notification
bit 7: queue to top
bit 6: do ID page
bit 5: no form feed
bit 4: reserved
bit 3: explicity queuing only
bit 2: notify at print completion
bit 1: notify server operator/reply
bit 0: notify at print start
0Eh BYTE days to keep (FFh=forever)
0Fh BYTE bits 0,1: device (1=LPT1)
bits 4-7: remote drive to store spool file (1=A,...)
10h WORD length of following data area
12h N BYTEs up to 64 bytes of description
---if operation code = 03h---
0Dh 8 BYTEs user ID to associate with filename
---if operation code = 04h---
0Dh WORD block number
0Fh 8 BYTEs user ID to associate with filename
---if operation code = 05h---
0Dh BYTE RRN to start retrieve
0Eh BYTE bits 0,1: local print device (LPTx)
bit 3: if set, return entries for all users
0Fh WORD length of following area
11h N BYTEs up to 1500 bytes to receive $SCNTL records returned
---if operation code = 07h---
0Dh BYTE queue number
0Eh BYTE bits 0,1: local print device (LPTx)
0Fh WORD number of bytes of test print to be done
11h BYTE code: 01h print device
02h test print count
03h prn
---if operation code = 08h---
0Dh BYTE queue location or $SCNTL location to start access
returns next item for access:
00h-7Fh queued items
80h-FEh non-queued, non-printed items
FFh no more items
0Eh WORD unused
10h WORD length of following area
12h N BYTEs up to 64 bytes to receive $SCNTL records
---if operation code = 09h---
0Dh 3 BYTEs unused
10h N BYTEs path to non-spooled file to be queued for printing
Format of $SCNTL record:
Offset Size Description
00h 8 BYTEs user ID
08h 11 BYTEs filename in FCB format
13h 6 BYTEs node ID
19h 3 BYTEs creation date
1Ch BYTE flags
bit 7: queue to top
6: do ID page
5: no form feed at end
4: reserved
3: explicit queueing only
2: notify at completion
1: notify server operator/reply
0: notify at start
1Dh BYTE retention time in days
1Eh BYTE printing device (LPTx)
1Fh 3 BYTEs date last printed (0 = never)
22h BYTE device containing spoolfile
23h WORD bytes to print for test print
25h WORD block number to start print
27h BYTE reserved
----------6F0F-------------------------------
INT 6F - 10NET v5.0 - "RM LOCK" - ???
AH = 0Fh
???
Return: ???
----------6F10-------------------------------
INT 6F - 10NET - ATTACH/DETACH PRINTER
AH = 10h
AL = subfunction
00h initiate spooling if LPT1 is mounted
01h terminate spooling if LPT1 is mounted
SeeAlso: INT 21/AX=5D08h
----------6F11-------------------------------
INT 6F - 10NET - LOCK FCB
AH = 11h
AL = mode
01h sequential
02h random
03h random block
CX = number of records
DS:DX -> FCB (see INT 21/AH=0Fh)
Return: CF set on error
AX = error code (see also AH=00h)
0002h file not found
CF clear if successful
SeeAlso: AH=12h
----------6F12-------------------------------
INT 6F - 10NET - UNLOCK FCB
AH = 12h
AL = mode
00h sequential
01h random
02h random block
CX = number of records
DS:DX -> FCB (see INT 21/AH=0Fh)
Return: CF set on error
AX = error code (see also AH=00h)
0002h file not found
CF clear if successful
SeeAlso: AH=11h
----------6F13-------------------------------
INT 6F - 10NET v3.3+ - GET REMOTE CONFIGURATION TABLE ADDRESS
AH = 13h
DS:DX -> node ID, 12 bytes blank-padded
Return: CF set on error
AX = error code (see AH=00h)
CF clear if successful
ES:BX = configuration table address on given machine
SeeAlso: AH=03h
----------6F14-------------------------------
INT 6F - 10NET v3.3+ - GET REMOTE MEMORY
AH = 14h
BX:SI = address of remote memory
CX = length (<=1024 bytes)
DS:DX -> node ID, 12 bytes blank-padded
DS:DI -> area to receive remote memory image
Return: CF set on error
AX = error code (see AH=00h)
CF clear if successful
CX = amount of memory copied to DS:SI
----------6F1501-----------------------------
INT 6F - 10NET v3.3+ - GET SHARED DEVICE ENTRY
AX = 1501h
BX = zero-based index
DS:SI -> node ID, 12 bytes blank-padded
ES:DI -> 85-byte buffer for shared device table entry (see below)
Return: CF set on error
AX = error code (see AH=00h)
CF clear if successful
ES:DI buffer contains shared device table entry of BXth device:
SeeAlso: AX=1502h,AX=1503h
Format of shared device table entry:
Offset Size Description
00h 8 BYTEs device
08h 8 BYTEs alias
10h 64 BYTEs path
50h 8 BYTEs password
58h BYTE access
59h 4 BYTEs mask
----------6F1502-----------------------------
INT 6F - 10NET v3.3+ - SET SHARED DEVICE ENTRY
AX = 1502h
DS:SI -> node ID, 12 bytes blank-padded
ES:DI -> valid shared device table entry
Return: CF set on error
AX = error code (see AH=00h)
CF clear if successful
SeeAlso: AX=1501h,AX=1503h
----------6F1503-----------------------------
INT 6F - 10NET v3.3+ - DELETE SHARED DEVICE ENTRY
AX = 1503h
BX = zero-based index
DS:SI -> node ID, 12 bytes blank-padded
Return: CF set on error
AX = error code (see AH=00h)
CF clear if successful
SeeAlso: AX=1501h,AX=1502h
----------6F16-------------------------------
INT 6F - 10NET v5.0 - "GL WHO" - ???
AH = 16h
???
Return: ???
----------6F17-------------------------------
INT 6F - 10NET v3.3+ - MOUNT
AH = 17h
AL = local drive number (0=A:)
BL = remote drive letter or '1'..'3' for LPTn or '4' or '5' for COMx
DS:DX -> node ID, 12 bytes blank-padded
Return: CF set on error
AX = error code (see AH=00h)
CF clear if successful
SeeAlso: AH=18h
----------6F18-------------------------------
INT 6F - 10NET v3.3+ - UNMOUNT
AH = 18h
AL = local drive number (0=A:)
BL = type
00h disk
01h-03h LPTn
04h,05h COMx
Return: CF set on error
AX = error code (see AH=00h)
CF clear if successful
SeeAlso: AH=17h
----------6F19-------------------------------
INT 6F - 10NET v5.0 - "AUDIT" - ???
AH = 19h
???
Return: ???
----------6F1A-------------------------------
INT 6F - 10NET v5.0 - "BULL" - ???
AH = 1Ah
???
Return: ???
----------6F1B-------------------------------
INT 6F - 10NET v5.0 - "GMOUNT" - ???
AH = 1Bh
???
Return: ???
----------6F1C-------------------------------
INT 6F - 10NET v5.0 - "GLOGIN" - ???
AH = 1Ch
???
Return: ???
----------6F1D-------------------------------
INT 6F - 10NET v5.0 - "TABDATA" - ???
AH = 1Dh
???
Return: ???
----------6F1E-------------------------------
INT 6F - 10NET v5.0 - "SCHED" - ???
AH = 1Eh
???
Return: ???
----------6F1F-------------------------------
INT 6F - 10NET v5.0 - "WHOAMI" - ???
AH = 1Fh
???
Return: ???
----------6F20-------------------------------
INT 6F - 10NET v5.0 - ???
AH = 20h
???
Return: ???
----------6F21-------------------------------
INT 6F - 10NET v5.0 - ???
AH = 21h
???
Return: ???
----------6F22-------------------------------
INT 6F - 10NET v5.0 - ???
AH = 22h
???
Return: ???
----------70---------------------------------
INT 70 - IRQ8 - CMOS REAL-TIME CLOCK
Desc: this interrupt is called when the real-time clock chip generates an
alarm or periodic interrupt, among others. The periodic interrupt
occurs 1024 times per second.
Nots: many BIOSes turn off the periodic interrupt in the INT 70h handler
unless in an event wait (see INT 15/AH=83h or INT 15/AH=86h).
may be masked by setting bit 0 on I/O port A1h
SeeAlso: INT 08,INT 0F"HP 95LX",INT 15/AH=01h"Amstrad",INT 15/AH=83h
SeeAlso: INT 15/AH=86h,INT 1A/AH=02h,INT 58"DESQview"
----------70---------------------------------
INT 70 - VIRUS "Stupid" - ???
SeeAlso: INT 6B"VIRUS",INT E0"VIRUS"
----------71---------------------------------
INT 71 - IRQ9 - REDIRECTED TO INT 0A BY BIOS
Notes: may be masked by setting bit 1 on I/O port A1h
the default BIOS handler invokes INT 0A for compatibility, since the
pin for IRQ2 on the PC expansion bus became the pin for IRQ9 on the
AT expansion bus.
under DESQview, only the INT 15h vector and BASIC segment address (the
word at 0000h:0510h) may be assumed to be valid for the handler's
process
SeeAlso: INT 0A,INT 59
----------72---------------------------------
INT 72 - IRQ10 - RESERVED
Note: may be masked by setting bit 2 on I/O port A1h
SeeAlso: INT 5A
----------73---------------------------------
INT 73 - IRQ11 - RESERVED
Note: may be masked by setting bit 3 on I/O port A1h
SeeAlso: INT 5B
----------74---------------------------------
INT 74 - IRQ12 - POINTING DEVICE (PS)
Notes: may be masked by setting bit 4 on I/O port A1h
under DESQview, only the INT 15h vector and BASIC segment address (the
word at 0000h:0510h) may be assumed to be valid for the handler's
process
SeeAlso: INT 33,INT 5C
----------75---------------------------------
INT 75 - IRQ13 - MATH COPROCESSOR EXCEPTION (AT and up)
redirected to INT 02 by the BIOS, for compatibility with the PC
Notes: may be masked by setting bit 5 on I/O port A1h
not all clones wire the coprocessor to generate this IRQ; some systems
generate an NMI (see INT 02) or assert the -ERROR pin on the CPU
(see INT 10"COPROCESSOR")
under DESQview, only the INT 15h vector and BASIC segment address (the
word at 0000h:0510h) may be assumed to be valid for the handler's
process
SeeAlso: INT 10"COPROCESSOR",INT 5D
----------76---------------------------------
INT 76 - IRQ14 - HARD DISK CONTROLLER (AT and later)
Note: may be masked by setting bit 6 on I/O port A1h
SeeAlso: INT 0E"IRQ6",INT 5E
----------77---------------------------------
INT 77 - IRQ15 - RESERVED (AT,PS)
Note: may be masked by setting bit 7 on I/O port A1h
SeeAlso: INT 5F
----------77---------------------------------
INT 77 - IRQ15 - POWER CONSERVATION (Compaq SLT/286)
Note: may be masked by setting bit 7 on I/O port A1h
SeeAlso: INT 15/AX=4600h,INT 5F
----------78---------------------------------
INT 78 - UofSalford DBOS DOS extender - API
BYTE following INT instruction contains function code
03h switch to protected mode
1Eh set real-mode memory size (specify how much real-mode memory
to leave free when running FTN77 programs)
22h uninstall
???
Return: ???
Note: DBOS supports functions 00h through 50h
----------78---------------------------------
INT 78 - DJGPP GO32 DOS EXTENDER - RELOCATED IRQ0
Note: this vector is overwritten when GO32 starts but is not restored
SeeAlso: INT 08,INT 10/AH=FFh"GO32",INT 79"GO32"
----------78---------------------------------
INT 78 - AutoCAD 10 ADI for Plotters
AX = function
0001h initialize comm port and reset plotter
BX = ??? (comm port?)
0002h close plotter
0003h move (pen up)
BX = new X position
CX = new Y position
0004h move (pen down)
BX = new X position
CX = new Y position
0005h select pen
BX = pen number
0006h select drawing speed
BX = drawing speed N
0007h select line style
BX = line style N
0008h return pen to pen carrier??? (called before change-pen cmd)
Return: ???
SeeAlso: INT 7A"AutoCAD",INT 7B"AutoCAD"
----------78---------------------------------
INT 78 - ADP-60 IDE controller - ORIGINAL INT 13
SeeAlso: INT 79"ADP-60"
----------7800-------------------------------
INT 78 - TARGA.DEV - CMC International SCSI device driver - SET I/O PORT
AH = 00h
DX = interface board I/O port
Return: CF set on error
AL = error code
00h illegal command given to SCSI code
01h invalid I/O port specified (must be from 100H to 3F8H, and
must be on an 8-port boundary)
02h invalid DMA channel specified (must be from 1 to 3)
03h invalid SCSI board number specified (must be from 0 to 7)
04h error from data register test during self-test
05h SCSI input signals not all 0 when SCSI RST activated
06h SCSI input signals not all 0 before selecting a SCSI device
07h BSY signal is active; SCSI bus is busy
08h SCSI board not selected, BSY signal did not come on in
response to raising SEL
09h time-out waiting for status state, signifying end of DMA
transfer
Note: if this routine is not called, the port is the driver's default
(usually 0280h or 0300h)
an installation check is performed by TARGA.DEV upon initialization
by checking for the string "SCSI" at offset 03h into the interrupt
handler
SeeAlso: AH=01h,AH=02h
----------7801-------------------------------
INT 78 - TARGA.DEV - GET I/O PORT
AH = 01h
Return: DX = current interface board I/O port
SeeAlso: AH=00h,AH=03h"TARGA"
----------7802-------------------------------
INT 78 - TARGA.DEV - SET DMA CHANNEL
AH = 02h
AL = interface board DMA channel
Return: CF set on error
AL = error code (see AH=00h)
Note: if this routine is not called, the DMA channel is the driver's default
(usually 3)
SeeAlso: AH=00h,AH=03h"TARGA"
----------7803-------------------------------
INT 78 - TARGA.DEV - GET DMA CHANNEL
AH = 03h
Return: AL = current interface board DMA channel
SeeAlso: AH=01h,AH=02h
----------7804-------------------------------
INT 78 - TARGA.DEV - SET SCSI DEVICE NUMBER
AH = 04h
AL = SCSI device number
Return: CF set on error
AL = error code (see AH=00h)
Note: if this routine is not called, the device number used is the driver's
default (usually 0)
SeeAlso: AH=02h,AH=05h
----------7805-------------------------------
INT 78 - TARGA.DEV - GET SCSI DEVICE NUMBER
AH = 05h
Return: AL = current SCSI device number
SeeAlso: AH=03h"TARGA",AH=04h
----------7806-------------------------------
INT 78 - TARGA.DEV - SET/CLEAR EARLY RETURN MODE
AH = 06h
AL = 00h clear early return mode
= 01h set early return mode
Note: if early return mode is set then SCSI will return with no errors
when the last DMA transfer is started in a call with AH=13h or AH=14h
if this routine is not called, early return mode is cleared
SeeAlso: AH=13h,AH=14h,AH=15h
----------7808-------------------------------
INT 78 - TARGA.DEV - INTERFACE BOARD SELF-TEST
AH = 08h
Return: CF set on error
AL = error code (see AH=00h)
Note: the SCSI bus is also reset
SeeAlso: AH=09h
----------7809-------------------------------
INT 78 - TARGA.DEV - RESET SCSI BUS
AH = 09h
Return: AL = error code if carry set (see AH=00h)
SeeAlso: AH=08h
----------7810-------------------------------
INT 78 - TARGA.DEV - SEND SCSI COMMAND
AH = 10h
DS:SI -> command bytes
Return: AH = SCSI status byte
CF clear if successful
AL = SCSI message byte
CF set on error
AL = error code (see AH=00h)
SeeAlso: AH=11h,INT 21/AX=4403h"ST-01"
Format of SCSI Command:
Offset Size Description
00h BYTE length of command
01h ??? command bytes
----------7811-------------------------------
INT 78 - TARGA.DEV - SEND SCSI COMMAND, RECEIVE DATA (PROGRAMMED I/O)
AH = 11h
DS:SI -> command bytes
ES:BX -> data storage area
CX = number of data bytes to transfer
Return: AH = SCSI status byte
CF clear if successful
AL = SCSI message byte
CF set on error
AL = error code (see AH=00h)
Note: this command receives data internally one byte at a time
SeeAlso: AH=10h,AH=13h
Format of SCSI Command:
Offset Size Description
00h BYTE length of command
01h ??? command bytes
----------7812-------------------------------
INT 78 - TARGA.DEV - SEND SCSI COMMAND AND DATA (PROGRAMMED I/O)
AH = 12h
DS:SI -> command bytes
ES:BX -> data storage area
CX = number of data bytes to transfer
Return: AH = SCSI status byte
CF clear if successful
AL = SCSI message byte
CF set on error
AL = error code (see AH=00h)
Note: this command sends data internally one byte at a time
SeeAlso: AH=14h
Format of SCSI Command:
Offset Size Description
00h BYTE length of command
01h ??? command bytes
----------7813-------------------------------
INT 78 - TARGA.DEV - SEND SCSI COMMAND, RECEIVE DATA (DMA)
AH = 13h
DS:SI -> command bytes
ES:BX -> data storage area
DX:CX = number of data bytes to transfer
Return: AH = SCSI status byte (if early return mode is clear)
CF clear if successful
AL = SCSI message byte (if early return mode is clear)
CF set on error
AL = error code (see AH=00h)
Note: this command receives data using DMA
SeeAlso: AH=11h,AH=12h
Format of SCSI Command:
Offset Size Description
00h BYTE length of command
01h ??? command bytes
----------7814-------------------------------
INT 78 - TARGA.DEV - SEND SCSI COMMAND AND DATA (DMA)
AH = 14h
DS:SI -> command bytes
ES:BX -> data storage area
DX:CX = number of data bytes to transfer
Return: AH = SCSI status byte (if early return mode is clear)
CF clear if successful
AL = SCSI message byte (if early return mode is clear)
CF set on error
AL = error code (see AH=00h)
Note: this command sends data using DMA
SeeAlso: AH=12h,AH=13h
Format of SCSI Command:
Offset Size Description
00h BYTE length of command
01h ??? command bytes
----------7815-------------------------------
INT 78 - TARGA.DEV - FINISH DATA TRANSFER (DMA)
AH = 15h
Return: AH = SCSI status byte
CF clear if successful
AL = SCSI message byte
CF set on error
AL = error code (see AH=00h)
Note: if AH=06h was previously called to set the early return mode, this
function finishes a command AH=13h or AH=14h which returned before
the last DMA transfer was finished
SeeAlso: AH=06h,AH=13h,AH=14h
----------79---------------------------------
INT 79 - AVATAR.SYS - FAST GET KEYSTROKE
Return: CF set if no keystroke available
AX = FFFFh
CF clear if key pressed
AX = keystroke
Notes: if a keystroke is available, it is removed from the keyboard buffer
before being returned
AVATAR.SYS is a CON driver by George Adam Stanislav which interprets
AVATAR command codes just as ANSI.SYS interprets ANSI commands
SeeAlso: INT 29
----------79---------------------------------
INT 79 - DJGPP GO32 DOS EXTENDER - RELOCATED IRQ1
Note: this vector is overwritten when GO32 starts but is not restored
SeeAlso: INT 09,INT 78"GO32",INT 7A"GO32"
----------79---------------------------------
INT 79 U - ADP-60 IDE adapter - ???
SeeAlso: INT 78"ADP-60"
----------790001-----------------------------
INT 79 U - AutoCAD Device Interface - DIGITIZER - INITIALIZE
AX = 0001h
Return: AX = 0001h ??? self-test result???
BX = 0001h
SeeAlso: AX=0002h,AX=0003h,INT 7A"AutoCAD"
----------790002-----------------------------
INT 79 U - AutoCAD Device Interface - DIGITIZER - CLOSE
AX = 0002h
SeeAlso: AX=0001h,AX=0003h
----------790003-----------------------------
INT 79 U - AutoCAD Device Interface - DIGITIZER - GET DIGITIZER STATUS
AX = 0003h
Return: AX = button state
0002h no button pressed
BX = X coordinate
CX = Y coordinate
0003h Pick button (0,A,B,C,D) pressed
BX = X coordinate
CX = Y coordinate
0005h other button (1-9) pressed
BX = number of button - 1
CX = X coordinate
DX = Y coordinate
Note: these return values are valid for the Houston Instruments HiPad Plus
9236 digitizer with a 16-button cursor
SeeAlso: AX=0001h,AX=0002h
----------7A---------------------------------
INT 7A U - Topware Network Operating System - ???
AL = ???
???
Return: ???
SeeAlso: INT 21/AH=FFh"Topware",INT 2F/AX=FF00h
----------7A---------------------------------
INT 7A - AutoCAD Device Interface
???
SeeAlso: INT 61/AX=0007h"OPTIMA",INT 78"AutoCAD",INT 79/AX=0001h
SeeAlso: INT 7B"AutoCAD"
----------7A---------------------------------
INT 7A - X.PC Packet software interface
ES:BX -> parameter block
SeeAlso: INT 60/AX=01FFh
----------7A---------------------------------
INT 7A - DJGPP GO32 DOS EXTENDER - RELOCATED IRQ2
Note: this vector is overwritten when GO32 starts but is not restored
SeeAlso: INT 0A,INT 79"GO32",INT 7B"GO32"
----------7A---------------------------------
INT 7A - Novell NetWare - LOW-LEVEL API - Notes
Note: this interrupt is used for IPX/SPX access in NetWare versions through
2.0a; in later versions, you should use INT 2F/AX=7A00h to get an
entry point even though INT 7A still exists. For both INT 7A and
the FAR entry point, BX contains the function number; IPX is
sometimes called internally with BX bit 15 set.
SeeAlso: INT 2F/AX=7A00h,INT 64"Novell",INT 7A/BX=0000h
----------7A----BX0000-----------------------
INT 7A - Novell NetWare - IPX Driver - OPEN SOCKET
BX = 0000h
AL = socket longevity
00h open until close or terminate
FFh open until close
DX = socket number (high byte in DL)
0000h dynamic allocation
else socket to open (see below)
Return: AL = return code
00h success
DX = socket number
FEh socket table full
FFh socket already open
Notes: TSRs which need to use sockets should set AL to FFh, non-resident
programs should normally use AL=00h
IPX can be configured to support up to 150 open sockets on a
workstation, and defaults to 20
this function is supported by Advanced NetWare 1.02+
SeeAlso: BX=0001h,BX=0004h
Values for socket number:
0451h File Service
0452h Service Advertising Socket
0453h Routing Information Packet
0455h NetBIOS Packet
0456h diagnostics
0457h ??? (appears to be related to server serial numbers)
4000h-7FFFh used for dynamic allocation
4444h Brightwork Development's SiteLock server
5555h Brightwork Development's SiteLock client (workstation)
8000h-FFFFh assigned by Novell
Note: SiteLock is an application metering product using IPX to communicate
between the application and the license server
----------7A----BX0001-----------------------
INT 7A - Novell NetWare - IPX Driver - CLOSE SOCKET
BX = 0001h
DX = socket number (high byte in DL)
Notes: also cancels events set by any Event Control Blocks for the socket
the program must close all open sockets before terminating
this function is supported by Advanced NetWare 1.02+
SeeAlso: BX=0000h
----------7A----BX0002-----------------------
INT 7A - Novell NetWare - IPX Driver - GET LOCAL TARGET
BX = 0002h
ES:SI -> target internetwork address (see INT 7A/BX=000Bh)
ES:DI -> 6-byte buffer for local target
Return: AL = return code
00h success
CX = expected one-way transfer time (clock ticks) for a 576-byte
packet
ES:DI -> local target
FAh unsuccessful (no path to destination)
Notes: the internetwork address consists of a 4-byte network address followed
by a 6-byte node address. The local target is only a 6-byte node
address. If the target is in the same network, the local target is
just the node address of target; otherwise, the local target is the
node address of the bridge that leads to the target.
this function may be called from inside IPX and AES Event Service
Routines, but not from other interrupt handlers
this function is supported by Advanced NetWare 1.02+
SeeAlso: BX=0009h
----------7A----BX0003-----------------------
INT 7A - Novell NetWare - IPX Driver - SEND PACKET
BX = 0003h
ES:SI -> Event Control Block (see below)
Notes: returns immediately; IPX attempts to send the packet in the background
this function is supported by Advanced NetWare 1.02+
SeeAlso: BX=0004h,BX=000Fh,INT 21/AH=EEh"Novell"
Format of Event Control Block:
Offset Size Description
00h DWORD Link
04h DWORD -> Event Service Routine (00000000h if none)
08h BYTE in use flag
00h available
E0h AES temporary
F6h \ special IPX/SPX processing for v3.02+
F7h /
F8h IPX in critical section
F9h SPX listening
FAh processing
FBh holding
FCh AES waiting
FDh AES couting down delay time
FEh awaiting packet reception
FFh sending packet
09h BYTE completion code (see below)
0Ah WORD socket (big-endian)
0452h Service Advertising Socket
0456h diagnostics
other
0Ch 4 BYTES IPX workspace
10h 12 BYTES driver workspace
1Ch 6 BYTES immediate local node address
22h WORD fragment count
24h var fragment descriptors
Offset Size Description
00h DWORD -> fragment data
04h WORD size of fragment in bytes.
Notes: ESR is a far procedure that is called when the ECB has been handled.
On call, the in use flag is zero if the ECB has been handled,
non-zero otherwise. If the flag is zero, the completion code holds
the result of the event.
the first fragment should start with an IPX header
all fragments are concatenated and sent in one piece
node address FFh FFh FFh FFh FFh FFh broadcasts to all nodes
Values for ECB completion code:
00h success
ECh remote terminated connection without acknowledging packet
EDh abnormal connection termination
EEh invalid connection ID
EFh SPX connection table full
F9h event should not be cancelled
FAh cannot establish connection with specified destination
FCh cancelled
FDh malformed packet
FEh packet undeliverable
FFh physical error
Event Service Routine called with:
AL = caller's identity (00h = AES, FFh = IPX)
ES:SI -> event control block
interrupts disabled
Format of IPX header:
Offset Size Description
00h WORD checksum (high byte first [big-endian])
02h WORD length in bytes (high byte first) of total packet
04h BYTE transport control
05h BYTE packet type
00h unknown packet type
01h routing information packet
02h echo packet
03h error packet
04h packet exchange packet (always use this one)
05h SPX packet
11h-1Eh experimental protocols
06h 10 BYTES destination internetwork address
10h WORD destination socket (high byte first)
12h 10 BYTES source internetwork address
1Ch WORD source socket (high byte first)
Format of Service Advertising Protocol Service Query Packet:
Offset Size Description
00h 30 BYTEs IPX header
1Eh WORD query type (big-endian)
20h WORD server type (big-endian) (see INT 21/AH=E3h"NetWare")
Format of Service Advertising Protocol Server Identification Packet:
Offset Size Description
00h 30 BYTEs IPX header
1Eh WORD response type (big-endian)
0002h general service
0004h nearest service
20h WORD server type (big-endian) (see INT 21/AH=E3h"NetWare")
22h 48 BYTEs ASCIZ server name
52h 2 WORDs network number (big-endian)
54h 3 WORDs node number (big-endian)
5Ch WORD socket number (big-endian)
5Eh WORD number of hops between caller and server (big-endian)
----------7A----BX0004-----------------------
INT 7A - Novell NetWare - IPX Driver - LISTEN FOR PACKET
BX = 0004h
ES:SI -> Event Control Block (see BX=0003h)
Return: AL = status
00h successful
FFh no listening socket for packet
Desc: this function provides IPX with an ECB for receiving an IPX packet, but
does not wait for a packet to arrive
Notes: the application must open a socket and initialize the ECB's ESR
address, socket number, fragment count, and fragment descriptor
fields before invoking this function
there is no limit on the number of ECBs which may simultaneously be
listening on a socket
this function is supported by Advanced NetWare 1.02+
SeeAlso: BX=0000h,BX=0003h
----------7A----BX0005-----------------------
INT 7A - Novell NetWare - IPX Driver - SCHEDULE IPX EVENT
BX = 0005h
AX = delay time in clock ticks
ES:SI -> Event Control Block (see BX=0003h)
Note: this function is supported by Advanced NetWare 1.02+
SeeAlso: BX=0006h,BX=0007h,BX=0008h
----------7A----BX0006-----------------------
INT 7A - Novell NetWare - IPX Driver - CANCEL EVENT
BX = 0006h
ES:SI -> Event Control Block (see BX=0003h)
Return: AL = return code
00h success
F9h event in use
FCh event cancelled
FFh unsuccessful, event not in use, or unrecognized ECB flag
Notes: cannot cancel packets which the node's driver has already sent
this function is supported by Advanced NetWare 1.02+
SeeAlso: BX=0005h
----------7A----BX0007-----------------------
INT 7A - Novell NetWare - IPX Driver - SCHEDULE SPECIAL EVENT
BX = 0007h
AX = delay time
ES:SI -> Event Control Block (see BX=0003h)
Note: this function is supported by Advanced NetWare 1.02+
SeeAlso: BX=0006h
----------7A----BX0008-----------------------
INT 7A - Novell NetWare - IPX Driver - GET INTERVAL MARKER
BX = 0008h
Return: AX = interval marker in clock ticks
Notes: may be used to measure the time elapsed between two events, up to one
hour
this function is supported by Advanced NetWare 1.02+
SeeAlso: BX=0005h
----------7A----BX0009-----------------------
INT 7A - Novell NetWare - IPX Driver - GET INTERNETWORK ADDRESS
BX = 0009h
ES:SI -> buffer for own internetwork address (see below)
Return: ES:SI buffer filled
SI destroyed
Note: this function is supported by Advanced NetWare 1.02+
SeeAlso: BX=0002h,BX=000Bh
Format of internetwork address:
Offset Size Description
00h 4 BYTEs network number (big-endian)
04h 6 BYTEs node number within network (big-endian)
----------7A----BX000A-----------------------
INT 7A - Novell NetWare - IPX Driver - RELINQUISH CONTROL
BX = 000Ah
Desc: this call indicates that the application is idle and permits the IPX
driver to do some work
Note: this function is supported by Advanced NetWare 1.02+
SeeAlso: INT 15/AX=1000h,INT 21/AH=89h,INT 2F/AX=1680h
----------7A----BX000B-----------------------
INT 7A - Novell NetWare - IPX Driver - DISCONNECT FROM TARGET
BX = 000Bh
ES:SI -> internetwork address (see below)
Notes: this function permits the network software on the remote machine to
remove any virtual connection with the calling machine
only use in point-to-point networks
should never be called from within an Event Service Routine
this function is supported by Advanced NetWare 1.02+
SeeAlso: BX=0002h,BX=0009h
Format of internetwork address:
Offset Size Description
00h 4 BYTEs destination network (big-endian)
04h 6 BYTEs destination node (big-endian)
0Ah 2 BYTEs destination socket (big-endian)
----------7A----BX000C-----------------------
INT 7A U - Novell NetWare - IPX Driver - internal - INITIALIZE NETWORK ADDRESS
BX = 000Ch
CX:DX = global network address (see INT 7A/BX=0002h)
ES:DI -> "OSINCRITICALSECTION" flag
DS:SI -> current mode for socket
Note: the address cannot be changed once it has been initialized
----------7A----BX000D-----------------------
INT 7A U - Novell NetWare - IPX Driver - internal - IPX GET PACKET SIZE
BX = 000Dh
Return: AX = maximum packet size
CX = retry count
SeeAlso: BX=001Ah
----------7A----BX000E-----------------------
INT 7A U - Novell NetWare - IPX Driver - internal - TERMINATE SOCKETS
BX = 000Eh
Return: nothing
Note: this function terminates all sockets opened with the current mode; this
may be intended for future enhancements as the socket mode never
changes in v2.15
----------7A----BX000F-----------------------
INT 7A U - Novell NetWare - IPX Driver - INTERNAL - SEND PACKET
BX = 000Fh
ES:SI -> Event Control Block (see BX=0003h)
Note: similar to function 0003h, but apparently does not allow multiple
fragments
SeeAlso: BX=0003h
----------7A----BX0010-----------------------
INT 7A - Novell NetWare - SPX Driver - INSTALLATION CHECK
BX = 0010h
AL = 00h
Return: AL = FFh if SPX loaded
BH = SPX major version
BL = SPX minor version
CX = maximum SPX connections
DX = SPX connections available
Note: this function is supported by Advanced NetWare 2.1+
SeeAlso: BX=0015h
----------7A----BX0011-----------------------
INT 7A - Novell NetWare - SPX Driver - ESTABLISH SPX CONNECTION
BX = 0011h
AL = retry count
AH = watchdog flag
ES:SI -> Event Control Block (see BX=0003h)
Return: AL = status
00h attempting to contact destination socket
EFh local connection table full
FDh buffer size not 42 or fragment count not 1
FFh sending socket not open
DX = assigned connection ID number
Desc: attempt to establish a connection with a listening socket
Notes: there should always be at least two SPX ECB's listening to a socket, so
that NetWare can perform its internal packet exchanges
the first fragment should start with a SPX header. Fill in all
destination addresses.
this function is supported by Advanced NetWare 2.1+
SeeAlso: BX=0000h,BX=0012h,BX=0013h,BX=0014h,BX=0015h
Format of SPX header:
Offset Size Description
00h WORD checksum (big-endian)
02h WORD length in bytes of total packet (big-endian)
04h BYTE transport control
05h BYTE packet type (see INT 7A/BX=0003h)
06h 10 BYTEs destination internet address
10h WORD destination socket (big-endian)
12h 10 BYTEs source internet address
1Ch WORD source socket (big-endian)
1Eh BYTE connection control
1Fh BYTE datastream type
20h WORD source connection ID (big-endian)
22h WORD destination connection ID (big-endian)
24h WORD sequence number (big-endian)
26h WORD acknowledge number (big-endian)
28h WORD allocation number (big-endian)
----------7A----BX0012-----------------------
INT 7A - Novell NetWare - SPX Driver - LISTEN FOR SPX CONNECTION
BX = 0012h
AH = watchdog flag
00h disabled
01h enabled
AL = retry count (00h = default)
ES:SI -> Event Control Block (see BX=0003h)
Notes: there should always be at least two SPX ECB's listening to a socket, so
that NetWare can perform its internal packet exchanges
this function is supported by Advanced NetWare 2.1+
SeeAlso: BX=0011h,BX=0013h,BX=0014h
----------7A----BX0013-----------------------
INT 7A - Novell NetWare - SPX Driver - TERMINATE SPX CONNECTION
BX = 0013h
DX = connection ID to terminate
ES:SI -> Event Control Block (see BX=0003h)
Note: this function is supported by Advanced NetWare 2.1+
SeeAlso: BX=0011h,BX=0012h,BX=0014h
----------7A----BX0014-----------------------
INT 7A - Novell NetWare - SPX Driver - ABORT SPX CONNECTION
BX = 0014h
DX = connection ID to terminate
Notes: this function is supported by Advanced NetWare 2.1+
this function does not tell the other side that the connection has been
terminated
also aborts any outstanding Establish Connection, Terminate Connection,
and Send Sequenced Packet commands
SeeAlso: BX=0011h,BX=0013h
----------7A----BX0015-----------------------
INT 7A - Novell NetWare - SPX Driver - GET SPX CONNECTION STATUS
BX = 0015h
DX = connection ID
ES:SI -> status buffer (see below)
Return: AL = return code
00h connection still valid
ES:SI -> status buffer filled
EEh no such connection
Note: this function is supported by Advanced NetWare 2.1+
SeeAlso: BX=0010h,BX=0011h
Format of status buffer:
Offset Size Description
00h BYTE connection state
01h waiting to establish connection
02h starting (attempting to create connection)
03h connection established
04h terminating
01h BYTE watchdog flag
bit 0: used internally by SPX
bit 1: SPX watchdog is monitoring connection
bits 2-7: used internally by SPX
02h WORD source connection ID (big-endian)
04h WORD destination connection ID (big-endian)
06h WORD sequence number of next packet sent (big-endian)
08h WORD acknowledge number, expected sequence number of next received
packet (big-endian)
0Ah WORD maximum sequence number remote SPX may send without ACK from
local SPX (big-endian)
0Ch WORD remote acknowledge number, next sequence number remote SPX
expects to receive (big-endian)
0Eh WORD remote allocation number, maximum sequence number local SPX
may send (big-endian)
10h WORD connection socket (big-endian)
12h 6 BYTEs immediate node address--bridge on local network to destination
18h 10 BYTEs destination internetwork address (see INT 7A/BX=000Bh)
22h WORD retransmit count (big-endian)
24h WORD estimated roundtrip delay (big-endian)
26h WORD retransmitted packets (big-endian)
28h WORD suppressed packets (big-endian)
2Ah 12 BYTEs ??? (v2.15)
----------7A----BX0016-----------------------
INT 7A - Novell NetWare - SPX Driver - SEND SPX PACKET
BX = 0016h
DX = connection ID
ES:SI -> Event Control Block (see BX=0003h)
Notes: this function is supported by Advanced NetWare 2.1+
CX may need to be 0001h ???
SeeAlso: BX=0011h,BX=0017h
----------7A----BX0017-----------------------
INT 7A - Novell NetWare - SPX Driver - LISTEN FOR SPX PACKET
BX = 0017h
DX = connection ID (unused in v2.15)
ES:SI -> Event Control Block (see BX=0003h)
Notes: this function is supported by Advanced NetWare 2.1+
CX may need to be 0001h ???
SeeAlso: BX=0011h,BX=0016h
----------7A----BX0018-----------------------
INT 7A U - Novell NetWare - SPX Driver - internal - ADD DIAGNOSTIC ELEMENT
BX = 0018h
ES:SI -> diagnostic element (see below) to be added to Diagnostic Queue
Note: this function is supported on file servers only under v2.15; v3.02 also
supports it on workstations
SeeAlso: BX=0019h
Format of diagnostic element:
Offset Size Description
00h DWORD pointer to next diagnostic element
04h DWORD pointer to function for ???
08h DWORD pointer to function for ???
----------7A----BX0019-----------------------
INT 7A U - Novell NetWare - IPX Driver - internal - CANCEL DIAGNOSTIC ELEMENT
BX = 0019h
ES:SI -> diagnostic element (see BX=0018h) to be removed
Note: this function is supported on file servers only under v2.15; v3.02 also
supports it on workstations
SeeAlso: BX=0018h
----------7A----BX001A-----------------------
INT 7A U - Novell NetWare - IPX Driver - internal - GET DRIVER PACKT SIZE LIMIT
BX = 001Ah
Return: AX = packet size with preamble
CX = IPX retry count
Note: this function is supported on file servers only under v2.15; v3.02 also
supports it on workstations
SeeAlso: BX=000Dh
----------7A----BX001B-----------------------
INT 7A U - Novell NetWare - IPX Driver - INTERNAL
BX = 001Bh
???
Return: ???
Note: this function is supported on file servers only under v2.15; v3.02 also
supports it on workstations
----------7A04-------------------------------
INT 7A - IBM 3270 Workstation Program API - CREATE A QUEUE
AH = 04h
???
Return: ???
SeeAlso: AH=06h
----------7A06-------------------------------
INT 7A - IBM 3270 Workstation Program API - DELETE A QUEUE
AH = 06h
???
Return: ???
SeeAlso: AH=04h
----------7A09--BX8020-----------------------
INT 7A - IBM 3270 Workstation Program API - SESSION SERVICES
AH = 09h
BX = 8020h (synchronous request)
CX = 0000h
DX = ID of session manager (SESSMGR)
AL = service
01h get session ID
02h get session info
04h dettach from session
05h attach to session
06h get list of windows available
07h get environment of window
08h get 'PIF' (program information file) info
0Ah get base window ID
0Bh get cursor info
ES:DI -> control block
Return: ???
----------7A09--BX8020-----------------------
INT 7A - IBM 3270 Workstation Program API - KEYBOARD SERVICES
AH = 09h
BX = 8020h (synchronous request)
CX = 0000h
DX = ID of keyboard manager
AL = service
01h connect to keyboard
02h disconnect from keyboard
03h read from keyboard
04h send keystroke to session
05h disable input
06h enable input
07h update status code
ES:DI -> control block
Return: ???
----------7A09--BX8020-----------------------
INT 7A - IBM 3270 Workstation Program API - WINDOW SERVICES
AH = 09h
BX = 8020h (synchronous request)
CX = 00FFh
DX = ID of window service controller (WSCTRL)
AL = service
01h connect to WS control
02h disconnect from WS control
03h add a window
04h change window's position on screen
05h change window's size
06h change window's color
07h change window's position in the presentation space
08h hide/unhide toggle
09h enlarge/reduce toggle
0Ah change screen background color
0Bh get window's position on screen
0Ch get window's size
0Dh get window's color
0Eh get window's position in the presentation space
0Fh determine whether hidden
10h determine whether enlarged
11h get background color
12h get window names
13h delete all windows from profile
14h pick active window
15h redraw screen
16h redraw window
17h delete a window from profile
18h get active window
19h get active screen
1Ah get window data
1Bh change window data
1Ch select active screen
ES:DI -> control block
Return: ???
----------7A09--BX8020-----------------------
INT 7A - IBM 3270 Workstation Program API - PRESENTATION SPACE SERVICES
AH = 09h
BX = 8020h
CX = 00FFh
DX = ID of PCPSM
AL = service
01h define presentation space
02h delete presentation space
03h display presentation space
04h position cursor in presentation space
05h change default presentation space
ES:DI -> control block
Return: ???
----------7A09--BX8020-----------------------
INT 7A - IBM 3270 Workstation Program API - 3270 EMULATION
AH = 09h
BX = 8020h
CX = 00FFh
DX = ID of 3270EML
AL = service
01h connect
02h disconnect
ES:DI -> control block
Return: ???
----------7A09--BX8020-----------------------
INT 7A - IBM 3270 Workstation Program API - OPERATOR INFORMATION AREA
AH = 09h
BX = 8020h
CX = 00FFh
DX = ID of OIAM
AL = service
01h read Operator Information Area
02h read OIA subset
ES:DI -> control block
Return: ???
Note: the OIA is the 25th line on the Host session
----------7A09--BX8020-----------------------
INT 7A - IBM 3270 Workstation Program API - TRANSLATE DATA
AH = 09h
BX = 8020h
CX = 00FFh
DX = ID of XLATE
AL = service
01h translate from host characters to ASCII and vice versa
(determined by control block byte 11)
ES:DI -> control block
Return: ???
----------7A09--BX8020-----------------------
INT 7A - IBM 3270 Workstation Program API - COPY SERVICE
AH = 09h
BX = 8020h
CX = 00FFh
DX = ID of copy service
AL = service
01h copy string from one presentation space to another
02h copy block from one presentation space to another
03h connect to PC session for copy
04h disconnect PC session from copy
ES:DI -> control block
Return: ???
----------7A09--BX8020-----------------------
INT 7A - IBM 3270 Workstation Program API - Multi-DOS
AH = 09h
BX = 8020h
CX = 00FFh
ES:DI -> control block
DX = ID of INDJQRY
get environment size
= ID of INDJASY
request DOS functions from workstation
= ID of MEMORY
AL = function
01h allocate memory
02h deallocate memory
03h modify allocated size
Return: ???
----------7A09-------------------------------
INT 7A - IBM 3270 Workstation Program API - HOST SERVICES
AH = 09h
BX = request type (4000h async, 8028h synchronous)
CX = 0000h
DX = ID of MFIC
AL = service
01h connect to host
02h disconnect from host
03h read DFT structured data from host
04h write DFT structured data to host
05h create a host buffer
ES:DI -> control block
----------7A13-------------------------------
INT 7A - IBM 3270 Workstation Program API - GET DATA FROM A QUEUE
AH = 13h
???
Return: ???
----------7A7A-------------------------------
INT 7A - Canon IX-30F Image Scanner SI3.SYS - INTERFACE
AH = 7Ah
???
Return: AX = 0000h success
000Eh undefined function code
Note: this interface is normally on INT 7A but can be changed via device
driver command line arguments
----------7A81-------------------------------
INT 7A - IBM 3270 Workstation Program API - RESOLVE A GATE NAME
AH = 81h
ES:DI -> 8-char blank-padded gate name
"SESSMGR ", "KEYBOARD", "WSCTRL ", "MFIC ", "PCPSM ",
"3270EML ", "COPY ", "XLATE ", "OIAM ", "MEMORY ",
"INDJQRY ", or "INDJASY "
Return: DX = gate ID
----------7A83-------------------------------
INT 7A - IBM 3270 Workstation Program API - GET COMPLETION RESULTS
AH = 83h
???
Return: ???
----------7AFDCB-----------------------------
INT 7A - IBM Personal Communications/3270 - INSTALLATION CHECK
AX = FDCBh
Return: DX:AX -> PCS/3270 signature block if loaded (see below)
Format of signature block:
Offset Size Description
04h WORD PCS/3270 signature (5741h)
06h WORD version (0501h = PCS/3270 v1.0)
----------7AFE01-----------------------------
INT 7A - IBM PC3270 EMUL PROG v3 - INTERNAL SEND/RECEIVE FUNCTION
AX = FE01h
???
Return: ???
SeeAlso: AX=FE02h
----------7AFE02-----------------------------
INT 7A - IBM PC3270 EMUL PROG v3 - INTERNAL SEND/RECEIVE FUNCTION
AX = FE02h
???
Return: ???
SeeAlso: AX=FE01h
----------7AFF01-----------------------------
INT 7A - IBM PC3270 EMUL PROG v3 - INTERNAL API INITIALIZATION
AX = FF01h
ES:DI -> API function handler routine
Return: CX = 1200h
SeeAlso: AX=FF02h,AX=FF03h
----------7AFF02-----------------------------
INT 7A - IBM PC3270 EMUL PROG v3 - INTERNAL API TERMINATION
AX = FF02h
Return: CX = 1200h
SeeAlso: AX=FF01h
----------7AFF03-----------------------------
INT 7A - IBM PC3270 EMUL PROG v3 - INTERNAL API INITIALIZATION
AX = FF03h
ES:DI -> send/receive function handler routine
Return: CX = 1200h
SeeAlso: AX=FF01h
----------7AFF04-----------------------------
INT 7A U - IBM PC3270 EMUL PROG v3 - INTERNAL ???
AX = FF04h
ES:DI -> ???
Return: CX = 1200h
----------7B---------------------------------
INT 7B - Btrieve API (single user)
DS:DX -> 38-byte parameter record (see below)
Return: return code field set
Note: Btrieve sets low byte of vector to 33h; this serves as the installation
check
SeeAlso: INT 2F/AX=AB01h,INT 7F/AX=0200h
Format of Btrieve parameter record:
Offset Size Description
00h DWORD pointer to data buffer
04h WORD data buffer length
06h DWORD pointer to 90-byte record containing positioning info
(should be same for all calls for same file)
0Ah DWORD pointer to 38-byte FCB info buffer
(should be same for all calls for same file)
0Eh WORD function code (see below)
10h DWORD pointer to file name/key buffer
14h BYTE key length
15h BYTE key number
16h DWORD pointer to status code (see below)
1Ah WORD interface code (version specific)
6176h version 5.10
Values for function code:
00h open
01h close
02h insert
03h update
04h delete
05h get_equal
06h get_next
07h get_prev
08h get_greater
09h get_gr_eql
0Ah get_less
0Bh get_less_eq
0Ch get_first
0Dh get_last
0Eh create
0Fh stat
10h extend
11h set_dir: set directory information
12h get_dir: get directory information
13h begin_trans
14h end_trans
15h abort_trans
16h get_pos: get record position number
17h get_direct: get data by sending record position
18h step_next
19h stop
1Ah version
1Bh unlock
1Ch reset
1Dh set owner
1Eh clear owner
1Fh create supplemental index
20h drop supplemental index
21h step first
22h step last
23h step previous
24h get next extended: get multiple records using a filter
25h get previous extended: get multiple records using a filter
26h step next extended: get multiple records using a filter
27h step previous extended: get multiple records using a filter
28h insert extended: insert one or more records
31h ???
add 50 (32h) to any "get" operation to just return the key data
add 100 (64h) for a single-record wait lock (automatically released on next
get)
add 200 (C8h) for a single-record nowait lock (nowait lock returns error 54h
or 55h if record already locked)
add 300 (12Ch) for a multiple-record wait lock (not released until unlock
called)
add 400 (190h) for a multiple-record nowait lock (nowait lock returns error
54h or 55h if record already locked)
Values for status code:
00h successful
01h invalid operation
02h I/O error
03h file not open
04h key value not found
05h duplicate key value
06h invalid key number
07h different key number
08h invalid positioning
09h end of file
0Ah modifiable key value error
0Bh invalid file name
0Ch file not found
0Dh extended file error
0Eh pre-image open error
0Fh pre-image I/O error
10h expansion error
11h close error
12h disk full
13h unrecoverable error
14h record manager inactive
15h key buffer too short
16h data buffer length overrun
17h position block length
18h page size error
19h create I/O error
1Ah number of keys
1Bh invalid key position
1Ch invalid record length
1Dh invalid key length
1Eh not a Btrieve file
1Fh file already extended
20h extended I/O error
22h invalid extension name
23h directory error
24h transaction error
25h transaction is active
26h transaction control file I/O error
27h end/abort transaction error
28h transaction max files
29h operation not allowed
2Ah incomplete accelerated access
2Bh invalid record address
2Ch null key path
2Dh inconsistent key flags
2Eh access to file denied
2Fh maximum open files
30h invalid alternate sequence definition
31h key type error
32h owner already set
33h invalid owner
34h error writing cache
35h invalid interface
36h variable page error
37h autoincrement error
38h incomplete index
39h expanded memory error
3Ah compression buffer too short
3Bh file already exists
3Ch reject count reached
3Dh work space too small
3Eh incorrect descriptor
3Fh invalid extended insert
40h filter limit reached
41h incorrect field offset
4Ah automatic transaction abort
4Eh deadlock detected
50h conflict
51h lock error
52h lost position
53h read outside transaction
54h record in use
55h file in use
56h file table full
57h handle table full
58h incompatible open mode
5Ah redirected device table full
5Bh server error
5Ch transaction table full
5Dh incompatible lock type
5Eh permission error
5Fh session no longer valid
60h communications environment error
61h data message too small
62h internal transaction error
----------7B---------------------------------
INT 7B - Eicon Access API (3270/5250 gateways)
----------7B---------------------------------
INT 7B CU - AutoCAD ADI INTERFACE
AX = function
0000h output blank line
other ???
Return: ???
Note: called by AutoCAD to perform its output
SeeAlso: INT 78"AutoCAD",INT 7A"AutoCAD"
----------7B---------------------------------
INT 7B - DJGPP GO32 DOS EXTENDER - RELOCATED IRQ3
Note: this vector is overwritten when GO32 starts but is not restored
SeeAlso: INT 0B,INT 10/AH=FFh"GO32",INT 7A"GO32",INT 7C"GO32"
----------7C---------------------------------
INT 7C U - IBM REXX88PC command language
???
----------7C---------------------------------
INT 7C - DJGPP GO32 DOS EXTENDER - RELOCATED IRQ4
Note: this vector is overwritten when GO32 starts but is not restored
SeeAlso: INT 0C,INT 7B"GO32",INT 7D"GO32"
----------7D---------------------------------
INT 7D - [obsoleted proposal] - ALTERNATE MULTIPLEX INTERRUPT
Note: this interface proposal has been moved to INT 2D; there are no known
implementations on INT 7D
SeeAlso: INT 2D, INT 2F
----------7D---------------------------------
INT 7D U - YTERM 1.4 - CLOCK SUPPORT
SeeAlso: INT 7E"YTERM"
----------7D---------------------------------
INT 7D - DJGPP GO32 DOS EXTENDER - RELOCATED IRQ5
Note: this vector is overwritten when GO32 starts but is not restored
SeeAlso: INT 0D,INT 7C"GO32",INT 7E"GO32"
----------7D---------------------------------
INT 7D - HyperPAD v2.2 - API ACCESS
Note: this vector is hooked but immediately passed on (without checking
whether the previous handler was 0000h:0000h). The sole purpose of
this vector is to provide the address of the data area described
below.
Format of HyperPAD data area:
Offset Size Description
-16h DWORD pointer to ??? FAR function
-12h DWORD pointer to callback setting function
[C calling conventions, (*callback)(int (_loadds far *)()) ]
-0Eh 6 BYTEs signature "BRC001"
-08h DWORD pointer to previous INT 7D handler
-04h DWORD pointer to ??? data
00h HyperPAD INT 7D handler
----------7E---------------------------------
INT 7E - RESERVED FOR DIP, Ltd. ROM LIBRARY
----------7E---------------------------------
INT 7E U - YTERM 1.4 - ???
SeeAlso: INT 7D"YTERM",INT 7F"YTERM"
----------7E---------------------------------
INT 7E - DJGPP GO32 DOS EXTENDER - RELOCATED IRQ6
Note: this vector is overwritten when GO32 starts but is not restored
SeeAlso: INT 0E,INT 7D"GO32",INT 7F"GO32"
----------7F---------------------------------
INT 7F - IBM XGA - ???
----------7F---------------------------------
INT 7F - Halo88 - API
BX = function
64h arc
65h bar
66h box
67h circle
68h clr
69h default hatch style
6Ah default line style
6Bh delhcur
6Ch delln / deltcur
6Dh ellipse
6Eh fill
6Fh flood
70h flood2
71h init graphics
72h init hcur
73h init marker
74h init tcur
75h inqarc
76h inqbknd
77h inqclr
78h inqerr
79h inqgcur
7Ah inqhcur
7Bh inqmarker
7Dh inqtcur
7Eh inqtext
7Fh lnabs
80h lnrel
81h markerabs
82h markerrel
83h moveabs
84h movehcurabs
85h movehcurrel
86h moverel
87h movetcurabs
88h movetcurrel
89h movefrom
8Ah moveto
8Bh pie
8Ch polylnabs
8Dh polylnrel
8Eh ptabs
8Fh ptrel
91h setasp
92h set color
93h set font
94h set hatch style
95h set line style
97h settext
98h set text color
99h btext
9Ah setseg
9Bh display
9Ch setscreen
9Eh close graphics
9Fh ftinit
A0h ftlocate
A1h ftext
A5h set viewport
A6h set window
A7h set world
AAh ftcolor
ACh initlp
ADh inqasp
AEh inqdev
AFh inqdisplay
B0h inqft
B1h inqftcolor
B2h inqinterlace
B3h inqlpa
B4h inqlpg
B5h inqmode
B6h inqscreen
B7h inqversion
B8h roam
B9h scroll
BAh setieee
BBh set interlace
BCh shift
BDh start graphics
BEh vpan
CBh gwrite
CCh gread
CDh setxor
CEh rbox
CFh rcir
D0h rlnabs
D1h rlnrel
D2h delbox
D3h delcir
D5h setseg2
DCh worldoff
DDh mapwtod
DEh mapdtow
DFh mapwton
E0h mapntow
E1h mapdton
E2h mapntod
E3h inqworld
E4h inqviewport
E5h set line width
E6h lnjoint
E7h set locator
E8h read locator
E9h setdev
EBh setstext
ECh setstclr
EDh setstang
EEh stext
EFh inqstext
F0h setdegree
F1h inqstsize
F2h polyfabs
F3h polyfrel
F4h inqdrange
F5h inqstang
F6h orglocator
F7h inqlocator
F8h inqarea
F9h setipal
FAh setborder
FBh inqcrange
FEh setclip
FFh fcir
100h setcrange
101h setdrange
102h setlattr
103h polycabs
104h polycrel
108h memcom
109h memexp
10Ah memmov
10Eh movefx
10Fh movetx
110h inqrgb
111h save image
112h restore image
113h setapal
114h setxpal
118h inqtsize
12Eh gprint
130h setprn
131h setpattr
133h setbattr
135h pexpand
136h ptnorm
137h pfnorm
13Bh inqprn
13Ch lopen
13Dh lclose
13Eh lappend
13Fh lrecord
140h lswitch
142h inqfun
15Dh lsetup
15Eh lrest
15Fh lsave
additional parameters on stack
Return: ???
Notes: Halo88 is a suite of graphics routines
according to Stuart Kemp, the code appears to make no provisions for
chaining
----------7F---------------------------------
INT 7F - CONVERGENT TECHNOLOGIES ClusterShare CTOS ACCESS VECTOR
AL = request ID
01h "Request"/"RequestDirect"
ES:BX -> pRq
DX ignored
04h "Wait"
ES:BX -> ppMsgRet
DX = exchange
05h "AllocExch"
ES:BX -> pExchRet
06h "DeAllocExch"
DX = exchange
07h "Check"
ES:BX -> ppMsgRet
DX = exchange
CX = 4354h ('CT')
Return: AX = status
0000h successful
----------7F---------------------------------
INT 7F - Telebit ACS SERIAL I/O
ES:SI-> parameter block
Return: CF set on error
CF clear on success
Notes: the signature "PDGATEWRKSTNIF" appears just prior to the interrupt
handler; this serves as the installation check
Format of Telebit ACS parameter block:
Offset Size Description
00h BYTE command
3Ch status
3Dh connect
3Eh disconnect
3Fh read
40h data/command write
41h clear receive buffer
42h get configuration
43h get receiver status
44h raw write
45h search servers
46h set transmit buffer size
01h BYTE gateway number
02h BYTE reserved
03h BYTE port
04h 17 BYTES auxiliary buffer
15h BYTE session
16h WORD count of bytes passed to API
18h DWORD buffer pointer passed to/from API
1Ch WORD count of bytes passed from API
1Eh BYTE return code (see below)
Values for return code:
00h - success
01h - invalid session
05h - servername invalid
06h - netware fileserver bindery is locked
07h communication server not active
08h general failure in netware fileserver
09h not logged into a fileserver
10h connection table full
11h no response from communication server
12h connection attempt terminated abnormally
13h connection refused - no sessions available
14h gw_no/port already in use
15h invalid connection response
16h port invalid
17h incorrect version in server response
18h gw_no/port combination not configured
19h initialization has not been completed
20h no more sockets are available
21h no active poolname
23h FATAL internal interface error
24h registration of host workstation failed - name is already in used
25h registration of host workstation failed - workstation name table full
26h registration of host workstation failed - only one session may be
registered for dial-in
FFh telebit acs api is busy - retry later
----------7F---------------------------------
INT 7F - Non-dedicated NetWare 2.x File Server - ENTER CONSOLE MODE
Notes: the installation check consists of checking for the signature "Lynn"
in the four bytes preceding the interrupt handler; if present, the
current program is running as a DOS task on a non-dedicated NetWare
2.x file server.
Before placing the server into "console" mode, it is recommended that
NetWare broadcast messages be disabled with INT 21/AX=DE00h.
SeeAlso: INT 21/AX=DE00h
----------7F---------------------------------
INT 7F U - YTERM - ???
SeeAlso: INT 7E"YTERM"
----------7F---------------------------------
INT 7F - DJGPP GO32 DOS EXTENDER - RELOCATED IRQ7
Note: this vector is overwritten when GO32 starts but is not restored
SeeAlso: INT 0F,INT 7E"GO32"
----------7F---------------------------------
INT 7F - Canon IXHND2 Scanner Interface
----------7F---------------------------------
INT 7F - Alloy 386/MultiWare (MW386), Novell-Type Network Executive (NTNX)
Notes: the words at C800h:0000h and C800h:0002h will both be 584Eh if the
MW386 multitasking system is present (i.e. signature "NXNX")
NTNX allows its API to be placed on a different interrupt than 7Fh at
load time. To determine the actual vector used, open the device
"SPOOLER" with INT 21/AX=3D02h, place it in RAW mode with
INT 21/AX=4400h and INT 21/AX=4401h, then read one byte which will
be the actual interrupt number being used; the other interrupts may
be found with INT 7F/AH=09h/CL=03h
----------7F---------------------------------
INT 7F - Alloy NetWare Support Kit (ANSK) v2.2+ - INSTALLATION CHECK
Note: a program may determine that it is running on an ANSK Slave by checking
the five bytes at F000h:0000h for the ASCIZ signature "ANSK"; this
address is RAM, and should not be written. However, the above check
will not work on Slaves with <1MB RAM or those using the SLIM.SYS
device driver
----------7F00-------------------------------
INT 7F - Alloy NTNX, MW386 - SEMAPHORE LOCK AND WAIT
AH = 00h
DS:DX -> ASCIZ semaphore name (max 64 bytes)
Return: AL = status
00h successful
01h invalid function
02h semaphore already locked
03h unable to lock semaphore
04h semaphore space exhausted
05h host/target PC did not respond (NTNX)
AH = semaphore owner if status=02h
SeeAlso: AH=01h,AH=02h,AH=41h,INT 67/AH=00h
----------7F01-------------------------------
INT 7F - Alloy NTNX, MW386 - SEMAPHORE LOCK
AH = 01h
DS:DX -> ASCIZ semaphore name (max 64 bytes)
Return: AL = status (see AH=00h)
AH = semaphore owner if status=02h
SeeAlso: AH=00h,AH=02h,AH=41h
----------7F0104BX0000-----------------------
INT 7F - HLLAPI (IBM 3270 High-Level Language API)/LLAPI (Rabbit Low Level API)
AX = 0104h (HLLAPI gate ID)
BX = 0000h
DS:SI -> parameter control block (see below)
Return: parameter control block updated
SeeAlso: AX=0105h,AX=ABCDh
Format of parameter control block:
Offset Size Description
00h 3 BYTEs signature = 'PCB'
03h BYTE function number (see below)
04h WORD segment of control string
06h WORD offset of control string
08h WORD length of control string, unless explicit end-of-str char set
0Ah BYTE unused (IBM)
ControlString[0] (Rabbit)
0Bh WORD return code
0Dh WORD maximum length of control string (IBM)
unused (Rabbit)
Values for HLLAPI function number:
00h Query system (Attachmate implementation only)
01h Connect presentation space
02h Disconnect presentation space
03h Send string of keystrokes as if typed from keyboard
04h Wait ~60s, returns status of presentation space
05h Copy current presentation space into a user-defined buffer
06h Search presentation space for first occurrence of a specified string
07h Query cursor location in current presentation space
08h Copy part or all of current presentation space into user buffer
09h Set session parameters; parameters vary by vendor
0Ah Get info on sessions currently connected
0Bh Lock current presentation space
0Ch Unlock previously locked presentation space
0Dh Return copy of operator info area (OIA) of current presentation space
0Eh get attribute byte for given position in the current presentation space
0Fh copy string of characters to the current presentation space
10h workstation control functions
11h storage manager functions, intended primarily for BASIC applications
(not implemented by Rabbit)
12h set delay period in half-second intervals
14h get info on level of workstation support used
15h reset session parameters to default values
16h get detailed info on the current session
17h start host notification to application on presentation sp or OIA update
18h check host update when host notification enabled
19h stop host notification
1Eh search field within current presentation space for string
1Fh get first positionof a selected field in the current presentation space
20h get length of specified field
21h copy string into a specified field
22h copy specified field into a user-defined buffer
23h create alternate presentation space (IBM only), don't use with BASIC
24h switch to alternate presentation space (IBM only), not with BASIC
25h display cursor in specified area (IBM only), don't use with BASIC
26h display alternate presentation space (IBM only), don't use with BASIC
27h delete alternate presentation space (IBM only), don't use with BASIC
32h start intercepting keystrokes to allow filtering
33h get keystrokes after turning on interception
34h notify operator when keystroke rejected by filter subroutine
35h stop intercepting keystrokes
5Ah send file
5Bh receive file
5Ch run a program (not implemented by Rabbit)
5Dh execute DOS command (not implemented by Rabbit)
63h change presentation space position to PC display row/col or vice versa
FFh Get info on DCA implementation
Values for LLAPI function number:
80h initialize LLAPI (internal call)
83h set Session ID (one-character ID)
84h read Session ID (one-character ID)
85h lock 327x keyboard
86h unlock 327x keyboard
87h wait for Clear to Send
88h type ASCII character
89h type 327x key
8Ah read keyboard lock state
8Fh force screen update
90h view session
91h relinquish (suspend foreground until background becomes idle)
92h poke screen character
93h poke translated character
94h peek screen character
95h peek translated character
96h set cursor position
97h send scan code (Rabbit only)
98h synchronize (returns after keystroke queue empty)
99h type PC key (Rabbit only)
Session Parameters for function 09h:
ASCII ??? (Rabbit only)
ATTRIB return attributes in hex
NOATTRIB return attributes as blanks
CONPHYS make physical connection
CONLOG only make logical connection
EAB copy extended attribute bytes along with data
NOEAB copy data only
ESC=n set escape character to "n" (default '@')
EOT=n set end of string character (default 00h)
FPAUSE full-duration pause
FTNOWAIT return immediately from functions 5Ah and 5Bh (Rabbit only)
FTWAIT wait for file transfer to complete (Rabbit only)
IPAUSE interruptible pause
RABESC ??? (Rabbit only)
NORABESC ??? (Rabbit only)
SCANCODE ??? (Rabbit only)
STRLEN use explicit string lengths
STREOT use terminated strings
SRCHALL search entire presentation space
SRCHFROM search from specified offset
SRCHFRWD search forward from position 1
SRCHBKWD search backward from last position in presentation space
TIMEOUT=n ??? (Rabbit only)
TWAIT wait specified time for keyboard ready
LWAIT wait until keyboard ready
NWAIT no wait
TRON enable tracing
TROFF disable tracing
AUTORESET send reset before sending keys with function 03h
NORESET don't send reset
QUIET don't display messages sent with INT 21/AH=09h
NOQUIET allow messages to be displayed
TIMEOUT=n set timeout in 30-second intervals, 0 = wait until ^Break
XLATE translate extended attribute bytes
NOXLATE don't translate
NEWRET use HLLAPI v3.0 return code conventions
OLDRET use HLLAPI v2.0 return code conventions
----------7F0105-----------------------------
INT 7F - HDILOAD.EXE - 8514/A VIDEO CONTROLLER INTERFACE
AX = 0105h
Return: CF set on error
CF clear if successful
CX:DX -> array of FAR pointers to entry points
Note: most functions are invoked by pushing the DWORD parameter block pointer
and then performing a FAR call via the appropriate vector of the
entry point array
SeeAlso: AX=0104h,AX=ABCDh
Function numbers: (do FAR call via entry_points+4*function)
08h HOPEN
10h HINT
13h HLDPAL
15h HBBW
17h HBBR
18h HBBCHN
1Dh HQMODE
22h HCLOSE
30h HINIT
31h HSYNC
39h HSPAL
3Ah HRPAL
----------7F02-------------------------------
INT 7F - Alloy NTNX, MW386 - RELEASE SEMAPHORE
AH = 02h
DS:DX -> ASCIZ semaphore name (max 64 bytes)
Return: AL = status
00h successful
01h invalid function
02h semaphore locked by other user
AH = semaphore owner
03h unable to unlock semaphore
05h target PC did not respond
SeeAlso: AH=00h,AH=01h,AH=42h
----------7F0200-----------------------------
INT 7F - Btrieve Multi-User - GIVE UP TIME???
AX = 0200h
SeeAlso: INT 2F/AX=AB01h,INT 2F/AX=AB02h,INT 7B"Btrieve"
----------7F03-------------------------------
INT 7F - Alloy ANSK, NTNX, MW386 - GET USER NUMBER
AH = 03h
Return: AL = user number
AH = machine number (MW386)
Note: this function call is the recommended method for a CPU-bound process to
prevent its priority from being lowered
SeeAlso: AH=04h,AH=05h,AH=A1h
----------7F04-------------------------------
INT 7F - Alloy NTNX, MW386 - GET NUMBER OF USERS
AH = 04h
Return: AL = total number of users on currrent machine (MW386)
AL = number of slaves on system (NTNX)
SeeAlso: AH=03h
----------7F05-------------------------------
INT 7F - Alloy NTNX (Host) - LOCK/UNLOCK SYSTEM, SPOOLER CONTROL
AH = 05h
AL = function
00h lock system (disable slave services)
01h unlock system
02h enable spooler
03h disable spooler
04h enable slave timer update
05h disable slave timer update
06h enable form feeds
07h disable form feeds
SeeAlso: INT 17/AH=A4h
----------7F05-------------------------------
INT 7F - Alloy NTNX (Slave), MW386 - GET USER PARAMETERS
AH = 05h
DX:DI -> buffer for user information record (see below)
Notes: MW386 provides this function for backward compatibility only, and sets
many of the fields to zero because they are meaningless under MW386
this function has no effect when called by the host (user 0)
SeeAlso: AH=03h
Format of user information record:
Offset Size Description
00h WORD segment of video RAM
02h WORD segment of secondary copy of video RAM
04h WORD offset of screen update flag (see INT 10/AH=8Bh)
flag nonzero if update needed
06h WORD video NMI enable port
(not used by MW386, set to 0000h)
08h WORD video NMI disable port
(not used by MW386, set to 0000h)
0Ah BYTE processor type
00h 8088
01h V20
02h 8086
03h V30
06h 80386
0Bh WORD multitasking flag (00h = single tasking, 01h = multitasking)
(not used by MW386, set to 0000h)
0Dh WORD offset of terminal driver
(not used by MW386, set to 0000h)
0Fh BYTE port for console I/O
(not used by MW386, set to 0000h)
10h WORD offset of processor communication busy flag
bit 7 set when slave communicating with host
12h WORD pointer to FAR NX system call
(not used by MW386, set to 0000h)
14h WORD offset of 16-byte user configuration record (see AH=38h)
16h WORD offset of command/status word
18h WORD offset of screen valid flag (see INT 10/AH=93h)
nonzero if screen must be repainted
1Ah WORD offset of screen repaint flag
1Ch WORD pointer to NEAR NX system call
(not used by MW386, set to 0000h)
1Eh WORD offset for intercept flags
(not used by MW386, set to 0000h)
intercept flag = FFh if MSDOS intercepts should be disabled
20h WORD offset of terminal lock flag (see INT 10/AH=92h)
lock flag = FFh if backgrnd screen updates should be suspended
22h 26 BYTEs reserved
----------7F06-------------------------------
INT 7F - Alloy NTNX (Host) - GET SHARED DRIVE INFO
AH = 06h
AL = drive number (1=A:, 2=B:, etc)
ES:DI -> drive info record (see below)
Return: AX = status
0000h successful
ES:DI buffer filled
0001h not shared drive
Format of drive info record:
Offset Size Description
00h WORD segment of drive IO-REQUEST structure (MSDOS DPB)
02h WORD segment of allocation map (owner table)
one byte per FAT entry, containing user ID owning that entry
04h WORD segment of master FAT for drive (copy of FAT on disk)
06h WORD pointer to configuration file
08h WORD total number of clusters
0Ah WORD bytes per sector
0Ch WORD sectors per cluster
0Eh BYTE FAT type (0Ch = 12-bit, 10h = 16-bit)
----------7F06-------------------------------
INT 7F - Alloy NTNX (Slave) - ALLOCATE FREE CLUSTER ON SHARED DRIVE
AH = 06h
DL = drive number (1=A:,2=B:,etc)
CX = number of clusters to allocate
Return: AH = status
00h successful
CX = number of clusters still free
10h invalid shared drive request
CL = first and second shared drives
11h invalid cluster count (must be 01h-FFh)
----------7F07-------------------------------
INT 7F - Alloy NTNX, MW386 - GET LIST OF SHARED DRIVES
AH = 07h
Return: ES:DI -> shared drive list (see below)
Note: MW386 considers all fixed disks to be shared drives; only C and D will
be returned as shared
Format of shared drive list:
Offset Size Description
00h BYTE string length
01h BYTE number of shared drives
02h N BYTEs one byte per shared drive
----------7F08-------------------------------
INT 7F - Alloy NTNX (Host) - GET INTERRUPT VECTORS
AH = 08h
CL = function
00h get original interrupt vector
01h get Network Executive interrrupt
AL = interrupt number
DX:SI -> DWORD to hold interrupt vector
Return: AL = status
00h successful
01h interrupt vector not used by network executive
02h invalid subfunction
Note: the network executive uses interrupts 02h,08h,09h,0Fh,10h,13h,16h-19h,
1Ch,20h,28h,2Ah,2Fh,5Bh,67h,7Fh,ECh, and F0h-FFh
SeeAlso: AH=09h/CL=03h,INT 21/AH=35h
----------7F08--CL02-------------------------
INT 7F - Alloy NTNX - SET MESSAGE DISPLAY TIMEOUT
AH = 08h
CL = 02h
DX = timeout in seconds
Return: AL = status
00h successful
02h invalid subfunction
----------7F09-------------------------------
INT 7F - MultiLink Advanced - SET TASK PRIORITY
AH = 09h
AL = priority (0-7)
Note: the installation check consists of ensuring that the interrupt vector
is not pointing at segment 0000h, then checking whether the byte
at offset 0000h in the interrupt handler's segment is E9h
----------7F09-------------------------------
INT 7F - Alloy NTNX - ENABLE/DISABLE MUD FILE CHECKING
AH = 09h
CL = function
00h enable checking of RTNX.MUD file
01h disable RTNX.MUD checking
----------7F09--CL02-------------------------
INT 7F - Alloy NTNX - SWITCH HOST TO DEDICATED MODE
AH = 09h
CL = 02h
Note: in dedicated mode, the host will only poll for I/O requests from the
slave processors, and not provide workstation services
----------7F09--CL03-------------------------
INT 7F - Alloy NTNX,MW386 - GET ALTERNATE INTERRUPT
AH = 09h
CL = 03h
AL = default interrupt number (67h,7Fh,etc)
Return: CL = actual interrupt which handles specified interrupt's calls
SeeAlso: AH=08h
----------7F0A--CL00-------------------------
INT 7F - Alloy NTNX - GET SYSTEM FLAGS
AH = 0Ah
CL = 00h
ES:DI -> buffer for system flags (see below)
Return: ES:DI buffer filled
Notes: on a slave, only the NX_Busy flag is returned
all three flags are at fixed positions, so this function only needs to
be called once
an interrupt handler should only perform DOS or device accesses when
all three flags are 00h
Format of system flags:
Offset Size Description
00h DWORD pointer to NX_Busy flag (nonzero when communicating with users)
04h DWORD pointer to device driver busy flag
08h DWORD pointer to InTimer flag
----------7F0B--CL02-------------------------
INT 7F - Alloy NTNX (Host) - SET/RESET GRAPHICS DOS ON SLAVE
AH = 0Bh
CL = 02h
AL = slave ID number
CH = DOS to activate
00h graphics DOS
01h character DOS
Return: AL = status
00h successful
01h nothing done, proper DOS type already loaded
----------7F10--CL00-------------------------
INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - OPEN CHANNEL
AH = 10h
CL = 00h
AL = channel number
DX:DI -> channel buffer
Return: AL = status
00h successful
01h busy
02h channel range error (not 00h-3Fh)
03h invalid subfunction
0Dh unable to open
Note: may not be invoked from within a hardware interrupt handler
SeeAlso: AH=10h/CL=01h,AH=10h/CL=04h,AH=14h/CL=02h
----------7F10--CL01-------------------------
INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - CLOSE CHANNEL
AH = 10h
CL = 01h
AL = channel number
Return: AL = status
00h successful
01h busy
02h channel range error (not 00h-3Fh)
03h invalid subfunction
0Ah channel not open
Note: may not be invoked from within a hardware interrupt handler
SeeAlso: AH=10h/CL=00h,AH=10h/CL=05h
----------7F10--CL02-------------------------
INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - LOCK CHANNEL
AH = 10h
CL = 02h
AL = channel number
Return: AL = status
00h successful
01h busy
02h channel range error (not 00h-3Fh)
03h invalid subfunction
0Ah channel not open
0Ch channel already locked
Note: may not be invoked from within a hardware interrupt handler
SeeAlso: AH=10h/CL=03h,AH=10h/CL=06h,AH=10h/CL=08h
----------7F10--CL03-------------------------
INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - UNLOCK CHANNEL
AH = 10h
CL = 03h
AL = channel number
Return: AL = status (see AH=10h/CL=02h)
Notes: should only be used on channels locked with AH=10h/CL=02h, not on those
locked by receipt of a datagram
may not be invoked from within a hardware interrupt handler
SeeAlso: AH=10h/CL=02h,AH=10h/CL=04h,AH=10h/CL=09h
----------7F10--CL04-------------------------
INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - RELEASE BUFFER
AH = 10h
CL = 04h
AL = channel number
Return: AL = status
00h successful
01h busy
02h channel range error (not 00h-3Fh)
03h invalid subfunction
Notes: unlocks buffer after received datagram has been processed
may not be invoked from within a hardware interrupt handler
SeeAlso: AH=10h/CL=00h
----------7F10--CL05-------------------------
INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - CLOSE ALL CHANNELS
AH = 10h
CL = 05h
Return: AL = status
00h successful
01h busy
02h channel range error (not 00h-3Fh)
03h invalid subfunction
Notes: clears all pending datagrams and clears buffer pointers before closing
the channels
may not be invoked from within a hardware interrupt handler
SeeAlso: AH=10h/CL=01h
----------7F10--CL06-------------------------
INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - LOCK ALL OPEN CHANNELS
AH = 10h
CL = 06h
Return: AL = status
00h successful
01h busy
02h channel range error (not 00h-3Fh)
03h invalid subfunction
Note: may not be invoked from within a hardware interrupt handler
SeeAlso: AH=10h/CL=02h,AH=10h/CL=08h
----------7F10--CL07-------------------------
INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - UNLOCK ALL LOCKED IDLE CHANNELS
AH = 10h
CL = 07h
Return: AL = status
00h successful
01h busy
02h channel range error (not 00h-3Fh)
03h invalid subfunction
Notes: unlocks all locked channels which have no pending datagrams
may not be invoked from within a hardware interrupt handler
SeeAlso: AH=10h/CL=03h,AH=10h/CL=09h
----------7F10--CL08-------------------------
INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - LOCK MULTIPLE CHANNELS
AH = 10h
CL = 08h
DX = maximum channel number to lock
Return: AL = status
00h successful
01h busy
02h channel range error (not 00h-3Fh)
03h invalid subfunction
Notes: locks channels numbered 00h through the value in DX
may not be invoked from within a hardware interrupt handler
SeeAlso: AH=10h/CL=02h,AH=10h/CL=06h,AH=10h/CL=09h
----------7F10--CL09-------------------------
INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - UNLOCK MULTIPLE CHANNELS
AH = 10h
CL = 09h
DX = maximum channel number to unlock
Return: AL = status
00h successful
01h busy
02h channel range error (not 00h-3Fh)
03h invalid subfunction
Notes: unlocks channels numbered 00h through the value in DX
may not be invoked from within a hardware interrupt handler
SeeAlso: AH=10h/CL=03h,AH=10h/CL=07h,AH=10h/CL=08h
----------7F11-------------------------------
INT 7F - Alloy NTNX, MW386 - SEND DATAGRAM
AH = 11h
DX:SI -> request block (see below)
Return: AL = status
00h successful
01h busy
02h channel range error (not 00h-3Fh)
03h invalid subfunction
0Ah packet too large (or <2 bytes if NTNX)
0Bh can't send packet to itself
0Ch invalid number of destinations
0Dh destination channel number out of range
0Eh destination user is busy
0Fh destination user has locked channel
10h channel not open
11h no datagram server on destination (NTNX)
Note: if wildcard channel FFh used, actual channel number will be filled in
SeeAlso: AH=12h
Format of request block:
Offset Size Description
00h DWORD pointer to packet to send
04h WORD packet size in bytes (1-4096)
06h BYTE number of destinations for packet (max 1Fh)
07h 31 BYTEs destination user IDs (FFh = broadcast to all except sender)
26h 31 BYTEs destination channels (FFh = first available channel)
45h 31 BYTEs return destination statuses
----------7F12-------------------------------
INT 7F - Alloy NTNX, MW386 - ACKNOWLEDGE DATAGRAM
AH = 12h
AL = channel number being acknowledged
DI:DX = 32-bit status to return to sender
Return: AL = status
00h successful
01h busy
02h channel range error (not 00h-3Fh)
03h invalid subfunction
0Ah channel not open
0Bh no message in channel
0Ch destination slave busy--retry (NTNX)
0Dh destination user not active
0Eh destination slave not active (NTNX)
0Fh destination disabled datagram service
Note: also unlocks the channel, allowing the next datagram to be received
SeeAlso: AH=11h,AH=15h/CL=04h
----------7F13--CL00-------------------------
INT 7F - Alloy NTNX, MW386 - RESET USER DATAGRAMS
AH = 13h
CL = 00h
Note: clears all pending datagrams and removes all channels opened in NTNX
compatibility mode
----------7F14--CL00-------------------------
INT 7F - Alloy NTNX, MW386 - SET RECEIVE ISR
AH = 14h
CL = 00h
DX:DI -> application FAR receive service routine (see below)
Return: AL = status
00h successful
01h busy
02h channel range error (not 00h-3Fh)
03h invalid subfunction
SeeAlso: AH=14h/CL=01h,AH=14h/CL=03h
Service routine called with:
DH = sender ID
DL = channel with datagram
interrupts disabled
Return: AL = response code
00h leave buffer locked, set channel status, and repeat call later
01h release channel buffer
02h change buffer pointer to DX:DI
AH,CX,DX,DI,SI may be destroyed
----------7F14--CL01-------------------------
INT 7F - Alloy NTNX, MW386 - SET ACKNOWLEDGE ISR
AH = 14h
CL = 01h
DX:DI -> application FAR acknowledge service routine (see below)
Return: AL = status
00h successful
01h busy
02h channel range error (not 00h-3Fh)
03h invalid subfunction
Note: the service routine will be called as soon as an acknowledgment arrives
SeeAlso: AH=12h,AH=14h/CL=00h,AH=14h/CL=04h,AH=15/CL=04h
Service routine called with:
DS:SI -> acknowledge structure (see AH=15h/CL=04h)
Return: AL = response code
00h application busy, network executive should call again later
01h acknowledge accepted
AH,DX,SI may be destroyed
----------7F14--CL02-------------------------
INT 7F - Alloy NTNX, MW386 - SET CHANNEL BUFFER POINTER
AH = 14h
CL = 02h
AL = channel number
DX:DI -> receive buffer
Return: AL = status
00h successful
01h busy
02h channel range error (not 00h-3Fh)
03h invalid subfunction
Note: may be called from within a receive ISR or when a datagram is pending
SeeAlso: AH=10h/CL=00h,AH=14h/CL=00h
----------7F14--CL03-------------------------
INT 7F - Alloy NTNX, MW386 - GET RECEIVE ISR
AH = 14h
CL = 03h
Return: DX:DI -> current receive ISR
SeeAlso: AH=14h/CL=00h,AH=14h/CL=04h
----------7F14--CL04-------------------------
INT 7F - Alloy NTNX, MW386 - GET ACKNOWLEDGE ISR
AH = 14h
CL = 04h
Return: DX:DI -> current acknowledge ISR
SeeAlso: AH=14h/CL=01h,AH=14h/CL=03h
----------7F14--CL05-------------------------
INT 7F - Alloy NTNX (Host), MW386 - GET BUSY POINTER
AH = 14h
CL = 05h
DX:DI -> buffer for busy structure (see below)
Return: DX:DI buffer filled
Format of busy structure:
Offset Size Description
00h DWORD pointer to busy flag byte
04h WORD fixed port address (FF00h)
----------7F15--CL00-------------------------
INT 7F - Alloy NTNX, MW386 - GET CHANNEL STATUS
AH = 15h
CL = 00h
AL = channel number
DX:DI -> status structure (see below)
Return: AL = status
00h successful
01h busy
02h channel range error (not 00h-3Fh)
03h invalid subfunction
SeeAlso: AH=15h/CL=01h
Format of status structure:
Offset Size Description
00h BYTE channel status
bit 0: channel open
1: channel buffer contains received data
7: channel locked
01h BYTE sender ID
----------7F15--CL01-------------------------
INT 7F - Alloy NTNX, MW386 - GET NEXT FULL CHANNEL
AH = 15h
CL = 01h
DX:DI -> full-channel structure
Return: AL = status
00h successful
01h busy
0Ah no datagrams available
Note: MW386 v1.0 returns the lowest channel with a datagram; newer versions
and NTNX return the oldest datagram
SeeAlso: AH=15h/CL=00h
Format of full-channel structure:
Offset Size Description
00h BYTE number of channel with oldest datagram
01h BYTE sender ID
----------7F15--CL02-------------------------
INT 7F - Alloy NTNX, MW386 - GET MAXIMUM NUMBER OF CHANNELS
AH = 15h
CL = 02h
Return: AH = number of channels available (40h for MW386)
Note: the application may always assume at least 32 channels available
SeeAlso: AH=15h/CL=03h
----------7F15--CL03-------------------------
INT 7F - Alloy NTNX, MW386 - GET MAXIMUM PACKET SIZE
AH = 15h
CL = 03h
DX:DI -> WORD for return value
Return: buffer WORD filled with maximum packet size (4096 for MW386)
SeeAlso: AH=15h/CL=02h
----------7F15--CL04-------------------------
INT 7F - Alloy NTNX, MW386 - GET AND CLEAR ACKNOWLEDGE STATUS
AH = 15h
CL = 04h
DX:DI -> status structure (see below)
Return: AL = status
00h successful
DX:DI structure filled
01h busy
0Ah no acknowledgement has arrived
SeeAlso: AH=12h,AH=14h/CL=01h
Format of status structure:
Offset Size Description
00h BYTE sender ID
01h BYTE channel number
02h 4 BYTEs receiver status (see AH=12h)
----------7F16-------------------------------
INT 7F - Alloy NTNX, MW386 - DIRECT MEMORY TRANSFER
AH = 16h
DX:SI -> transfer structure (see below)
Return: AL = status
00h successful
0Ah source or destination out of range
0Bh transfer kernal busy--try again
Notes: this call transfers memory contents directly between users; both source
and destination user IDs may differ from the caller's ID
no segment wrap is allowed
Format of transfer structure:
Offset Size Description
00h WORD bytes to transfer
02h BYTE source ID
FEh = caller
03h DWORD source address
07h BYTE destination ID
FFh = all slaves except caller
FEh = caller
08h DWORD destination address
----------7F21-------------------------------
INT 7F - Alloy NTNX, MW386 - SEND MESSAGE OR COMMAND TO USER(S)
AH = 21h
AL = sender's user ID
DS:DX -> control packet (see below)
Note: messages or commands are ignored if disabled by the destination user
SeeAlso: AH=22h
Format of control packet:
Offset Size Description
00h BYTE packet type
00h message
01h NTNX command
02h MW386 command
01h BYTE destination user ID or 'A' for all users
02h 62 BYTEs ASCIZ message (packet type 00h)
BIOS keycodes terminated by NUL byte (type 01h) or word (02h)
Note: a maximum of 16 keycodes will be processed for NTNX and MW386 commands
----------7F22-------------------------------
INT 7F - Alloy NTNX - GET MESSAGE
AH = 22h
Return: pending messages displayed on user's screen
SeeAlso: AH=21h
----------7F24-------------------------------
INT 7F - Alloy NTNX, MW386 - ATTACH OR RELEASE DRIVE FOR LOW-LEVEL WRITE ACCESS
AH = 24h
CL = function
00h attach
01h release
CH = drive (0=A:,1=B:,etc)
Return: AX = status
00h successful
01h invalid request
02h already attached
03h not attached
04h lock table full
Note: only drives on the current machine may be attached
----------7F24-------------------------------
INT 7F - Alloy NTNX - ATTACH/RELEASE HOST PROCESSOR
AH = 24h
CL = function
02h attach host
03h release host
Return: AX = status
00h successful
01h invalid request
02h already attached
03h not attached
04h lock table full
Note: the host processor may be attached in order to perform I/O via the host
----------7F25--CL00-------------------------
INT 7F - Alloy ANSK, NTNX, MW386 - GET NETWORK EXECUTIVE VERSION
AH = 25h
CL = 00h
Return: AH = version suffix letter
CH = major version number
CL = minor version number
SeeAlso: AH=25h/CL=01h
----------7F25--CL01-------------------------
INT 7F - Alloy ANSK, NTNX, MW386 - GET NETWORK EXECUTIVE TYPE
AH = 25h
CL = 01h
Return: CL = type
00h RTNX
01h ATNX
02h NTNX
03h BTNX
04h MW386
05h ANSK
SeeAlso: AH=25h/CL=00h
----------7F26--CL00-------------------------
INT 7F - Alloy NTNX, MW386 - GET NTNX FILE MODE
AH = 26h
CL = 00h
Return: AX = file mode bits
bit 0: directory protection enabled
1: extended open enabled
2: flush on every disk write
3: flush on every disk write in locked interval
4: flush on reads from simultaneously opened file
Note: MW386 does not support file modes, and always returns AX=001Fh
SeeAlso: AH=26h,AH=26h/CL=06h
----------7F26-------------------------------
INT 7F - Alloy NTNX - SET FILE I/O CHECKING LEVEL
AH = 26h
CL = check type to set/reset
01h directory protection
02h extended open
03h flush on every disk write
04h flush on disk write if any lock set during write
05h flush on all reads if file written
AL = new state (00h off, 01h on)
SeeAlso: AH=26h/CL=00h,AH=26h/CL=06h
----------7F26--CL06-------------------------
INT 7F - Alloy NTNX - CANCEL FLUSH ON WRITE
AH = 26h
CL = 06h
Note: cancels flags set by AH=26h/CL=03h and AH=26h/CL=04h
SeeAlso: AH=26h/CL=00h
----------7F30-------------------------------
INT 7F - Alloy MW386 - GET PORT INFORMATION
AH = 30h
CX = MW386 port number
Return: AL = FFh if port not found
else driver unit number
BL = port mode
BH = port type
02h remote
DH = owner's machine ID
DL = owner's user ID
SeeAlso: INT 17/AH=8Bh
----------7F31-------------------------------
INT 7F - Alloy MW386 v1.x only - CHECK PORT ASSIGNMENT
AH = 31h
???
Return: ???
----------7F37-------------------------------
INT 7F - Alloy NTNX (Host) - GET SEMAPHORE TABLE
AH = 37h
Return: ES:AX -> semaphore table
----------7F37-------------------------------
INT 7F - Alloy ANSK, NTNX (Slave) - DUMP STRING TO TERMINAL
AH = 37h
DS:DX -> ASCIZ string to display
Note: if the string is empty, a terminal update will be forced
----------7F38-------------------------------
INT 7F - Alloy NTNX (Slave), MW386 - SET NEW TERMINAL DRIVER
AH = 38h
AL = new terminal driver number
FFh dummy driver
FEh current driver
FDh load new driver
DS:SI -> new driver
SeeAlso: AH=39h
----------7F39-------------------------------
INT 7F - Alloy MW386 - SET TERMINAL DRIVER FOR ANOTHER USER
AH = 39h
AL = new terminal driver number
DL = user number (FFh = caller)
DH = machine number if DL <> FFh
Return: CF set if invalid user number
CF clear if successful
Notes: only available to supervisors
the new driver number will not take effect until the user is rebooted
SeeAlso: AH=38h
----------7F3A-------------------------------
INT 7F - Alloy MW386 - GET TERMINAL PARAMETERS
AH = 3Ah
DL = user number (FFh = caller)
DH = machine number
Return: CF clear if successful
AH = terminal driver number
AL = baud rate (00h = 38400, 01h = 19200, etc)
CL = parity (00h none, 01h even, 02h odd)
CH = handshaking (00h none, 01h XON/XOFF, 02h DTR/DSR, 03h XPC)
CF set if invalid user number
SeeAlso: AH=3Bh
----------7F3B-------------------------------
INT 7F - Alloy MW386 - SET TERMINAL PARAMETERS
AH = 3Bh
AL = baud rate (00h = 38400, 01h = 19200, etc)
CL = parity (00h none, 01h even, 02h odd)
CH = handshaking (00h none, 01h XON/XOFF, 02h DTR/DSR, 03h XPC)
DL = user number (FFh = caller)
DH = machine number for user
Return: CF set if invalid user number
Notes: only available to supervisors
the new parameters will take effect immediately if the user's terminal
has not been started, else AH=3Dh must be called to post the changes
SeeAlso: AH=3Ah,AH=3Dh
----------7F3C-------------------------------
INT 7F - Alloy MW386 - ENABLE/DISABLE AUTOBAUD DETECT
AH = 3Ch
AL = new state
00h disabled, 01h enabled
DL = user number (FFh = caller)
DH = machine number for user
Return: CF set if invalid user number
Note: only available to supervisors
SeeAlso: AH=3Dh
----------7F3D-------------------------------
INT 7F - Alloy MW386 - POST TERMINAL CONFIGURATION CHANGES
AH = 3Dh
Note: should be called whenever a program changes the terminal type or its
parameters
SeeAlso: AH=3Bh
----------7F41-------------------------------
INT 7F - Alloy NTNX - LOCK FILE FOR USER
AH = 41h
AL = user ID
DS:DX -> ASCIZ filename
Return: AL = status
00h successful
01h invalid function
02h already locked
03h unable to lock
04h lock table full
Note: requests exclusive read/write access to file
SeeAlso: AH=00h,,AH=41h"MW386",AH=42h"NTNX"
----------7F41-------------------------------
INT 7F - Alloy MW386 - LOCK SEMAPHORE FOR USER
AH = 41h
AL = user ID
DS:DX -> ASCIZ semaphore name
Return: AL = status
00h successful
01h invalid function
02h semaphore already locked
03h unable to lock semaphore
04h semaphore space exhausted
SeeAlso: AH=00h,AH=42h"MW386"
----------7F42-------------------------------
INT 7F - Alloy NTNX - UNLOCK FILE FOR USER
AH = 42h
AL = user ID
DS:DX -> ASCIZ filename
Return: AL = status
00h successful
01h invalid function
02h already locked
03h unable to lock
04h lock table full
SeeAlso: AH=00h,AH=41h"NTNX",AH=42h"MW386"
----------7F42-------------------------------
INT 7F - Alloy MW386 - UNLOCK SEMAPHORE FOR USER
AH = 42h
AL = user ID
DS:DX -> ASCIZ semaphore name
Return: AL = status
00h successful
01h invalid function
03h unable to unlock semaphore
SeeAlso: AH=02h,AH=41h"MW386",AH=42h"NTNX"
----------7F4E-------------------------------
INT 7F - Alloy MW386 v2+ - SET ERROR MODE
AH = 4Eh
AL = error mode flags
bit 0: display critical disk errors
1: display sharing errors
DX = 4E58h ("NX")
Return: AL = status
00h successful
SeeAlso: AH=4Fh
----------7F4F-------------------------------
INT 7F - Alloy MW386 v2+ - SET FCB MODE
AH = 4Fh
AL = FCB mode
02h read/write compatibility
42h read/write shared
DX = 4E58h ("NX")
Return: AL = status
00h successful
----------7F81-------------------------------
INT 7F - Alloy NTNX - ATTACH DEVICE FOR USER
AH = 81h
AL = user ID
DS:DX -> ASCIZ device name
SeeAlso: AH=82h
----------7F82-------------------------------
INT 7F - Alloy NTNX - RELEASE DEVICE FOR USER
AH = 82h
AL = user ID
DS:DX -> ASCIZ device name
SeeAlso: AH=81h
----------7FA0-------------------------------
INT 7F - Alloy MW386 - GET USER NAME
AH = A0h
DL = user number (FFh = caller)
DH = machine number for user
ES:DI -> 17-byte buffer for ASCIZ user name
Return: CF set if invalid user number
SeeAlso: AH=03h,AH=A1h
----------7FA1-------------------------------
INT 7F - Alloy MW386 - GET MACHINE, USER, AND PROCESS NUMBER
AH = A1h
Return: AL = process number
DL = user number
DH = machine number
SeeAlso: AH=03h,AH=A0h,AH=A2h
----------7FA2-------------------------------
INT 7F - Alloy MW386 - GET USER PRIVILEGE LEVEL
AH = A2h
DL = user number (FFh = caller)
DH = machine number for user
Return: CF clear if successful
AL = privilege level
00h supervisor
01h high
02h medium
03h low
CF set if invalid user number
SeeAlso: AH=A1h,AH=A3h
----------7FA3-------------------------------
INT 7F - Alloy MW386 - GET USER LOGIN STATE
AH = A3h
DL = user number
DH = machine number for user
Return: CF clear if successful
AL = login state
00h never logged in
01h currently logged out
03h currently logged in
CF set if invalid user number or user not active
SeeAlso: AH=A2h
----------7FA4-------------------------------
INT 7F - Alloy MW386 - VERIFY USER PASSWORD
AH = A4h
DS:DX -> ASCIZ password (null-padded to 16 bytes)
Return: AL = 00h if accepted
else invalid password
----------7FA5-------------------------------
INT 7F - Alloy MW386 - GET/SET USER STATUS
AH = A5h
AL = function
00h get status
Return: BX = user flags
bit 5: allow messages
CL = scan code for task manager hotkey
CH = scan code for spooler hotkey
DL = scan code for task swapper hotkey
DH = modifier key status
01h set status
BX = user flags (see above)
CL = scan code for task manager hotkey
CH = scan code for spooler hotkey
DL = scan code for task swapper hotkey
DH = modifier key status
DI = machine number and user number
Return: CF set if invalid user number
Note: must have supervisor privilege to set another user's status
----------7FABCDBX0000-----------------------
INT 7F - IBM 8516 Touch Screen Device Driver - GET API ENTRY
AX = ABCDh
BX = 0000h
Return: AX = total number of functions available
ES:BX -> entry point array
SeeAlso: AX=0104h,AX=0105h
Function numbers:
00h check initialization and reset
14h set user-defined subroutine
Notes: each driver function takes two stack parameters using Pascal calling
conventions: address of parameter block and address of results buffer
all pointers are FAR pointers
on return, AX contains the status of the call:
AX = 0000h successful
0001h invalid input
0002h interface error
0003h unable to perform function
Format of parameter block for function 00h:
Offset Size Description
00h WORD 0000h (function number)
Note: this function should be called before any other device driver functions
Format of results buffer for function 00h:
Offset Size Description
00h WORD touch screen status
0000h unavailable
0001h uncalibrated
FFFFh available
02h WORD aux mouse status (0000h not present, FFFFh present)
Notes: the following driver parameters will have been reset to zero:
touchdown counter, liftoff counter, position at last touch, position
at last lift, int call mask, select on count, select off count,
pos select on count, pos select off count.
the following driver parameters will have been reset as listed:
mouse emulation mode: left on
thresholds: 46 on screen, 96 push harder, 80 push release
x, y hysteresis: 400
data repeat rate: 40/sec
select mechanism: push-harder - first-touch
coordinate origin: upper left corner
filter frequency: medium
data block mask: all enabled
click lock: on
----------7FB0-------------------------------
INT 7F - Alloy NTNX, MW386 - RELEASE ALL SEMAPHORES FOR USER
AH = B0h
AL = user number
DS = code segment
Note: MW386 ignores AL and DS; it releases all semaphores locked using INT 67
or INT 7F locking functions
SeeAlso: AH=B1h,AH=B2h,AH=B3h,AH=B4h
----------7FB1-------------------------------
INT 7F - Alloy NTNX, MW386 - RELEASE NORMAL SEMAPHORES FOR USER
AH = B1h
AL = (bits 7-5) 000
(bits 4-0) user ID
Note: MW386 ignores AL; it releases all semaphores locked using INT 67 or
INT 7F locking functions
SeeAlso: AH=B0h,AH=B2h,AH=B3h,AH=B4h
----------7FB2-------------------------------
INT 7F - Alloy NTNX - RELEASE MESSAGES FOR USER
AH = B2h
AL = (bits 7-5) 001
(bits 4-0) user ID
SeeAlso: AH=B0h,AH=B1h,AH=B3h,AH=B4h
----------7FB3-------------------------------
INT 7F - Alloy NTNX - RELEASE FILES FOR USER
AH = B3h
AL = (bits 7-5) 010
(bits 4-0) user ID
SeeAlso: AH=B0h,AH=B1h,AH=B2h,AH=B4h
----------7FB4-------------------------------
INT 7F - Alloy NTNX - RELEASE DEVICES FOR USER
AH = B4h
AL = user ID
SeeAlso: AH=B0h,AH=B1h,AH=B2h,AH=B3h
----------7FC3-------------------------------
INT 7F - Alloy MW386 - WRITE BYTE TO TERMINAL AUX PORT
AH = C3h
AL = byte to write
Return: CF clear if successful
CF set on error
SeeAlso: AH=C6h
----------7FC5-------------------------------
INT 7F - Alloy MW386 - CHANGE CONSOLE MODE
AH = C5h
AL = new console mode
00h keyboard indirect
01h keyboard direct
02h data handshake enforced
03h no data handshake
Return: CF clear if successful
AL = prior console mode
CF set on error (caller is not remote user)
Note: modes 2 and 3 may be used for input through the console port; no video
output should be performed in these modes
----------7FC6-------------------------------
INT 7F - Alloy MW386 - WRITE BYTE TO CONSOLE PORT
AH = C6h
AL = byte to write
Return: CF clear if successful
CF set on error (caller is not remote user)
Note: any terminal driver data translation will be bypassed
SeeAlso: AH=C3h,AH=C7h
----------7FC7-------------------------------
INT 7F - Alloy MW386 - READ CONSOLE DATA BYTE
AH = C7h
Return: CF clear if successful
AL = byte read
CF set on error (no data available or caller is not remote user)
Note: used to read data after placing console in mode 2 or 3 (see AH=C5h)
SeeAlso: AH=C5h,AH=C6h,AH=C8h
----------7FC8-------------------------------
INT 7F - Alloy MW386 - READ CONSOLE DATA INTO BUFFER
AH = C8h
AL = maximum bytes to read
ES:DI -> buffer for console data
Return: CF clear if successful
CX = number of bytes read
CF set on error (caller is not remote user)
SeeAlso: AH=C7h
----------7FCF-------------------------------
INT 7F - Alloy NTNX - REBOOT USER PROCESSOR
AH = CFh
DS:DX -> ASCIZ string containing user number to be reset
SeeAlso: AH=D6h
----------7FD6-------------------------------
INT 7F - Alloy MW386 - RESET NETWORK EXECUTIVE
AH = D6h
DS:DX -> reset packet (see below)
Return: never if succesful
Note: all users will be shut down immediately if successful
SeeAlso: AH=CFh
Format of reset packet:
Offset Size Description
00h DWORD reset code (60606060h)
04h 16 BYTEs ASCIZ supervisor password padded with nulls
----------7FD7-------------------------------
INT 7F - Alloy MW386 - POST EVENT
AH = D7h
AL = user number (if local event)
DX = event number
----------7FD8-------------------------------
INT 7F - Alloy MW386 - FLUSH DISK BUFFERS
AH = D8h
Return: CF set on error
Note: forces all disk buffers to be written out immediately
SeeAlso: INT 21/AH=0Dh,INT 21/AX=5D01h,INT 2F/AX=1120h
----------7FDB-------------------------------
INT 7F - Alloy MW386 v2+ - GET MW386 INVOCATION DRIVE
AH = DBh
Return: AL = drive from which MW386 was started (2=C:,3=D:,etc)
----------7FE0-------------------------------
INT 7F - Alloy MW386 - CREATE DOS TASK
AH = E0h
AL = memory size (00h=128K, 01h=256K, 02h=384K, 03h=512K, 04h=640K)
DS:DX -> ASCIZ task name (max 16 bytes)
Return: CF clear if successful
AL = task create ID
CF set on error
Note: only foreground DOS tasks can use this function
SeeAlso: AH=E1h,AH=E2h,AH=E3h,AH=E6h,AH=E7h
----------7FE1-------------------------------
INT 7F - Alloy MW386 - GET DOS TASK PID FROM CREATE ID
AH = E1h
AL = create ID (from AH=E0h)
Return: AL = DOS process number
CL = memory size (00h=128K, 01h=256K, 02h=384K, 03h=512K, 04h=640K)
Note: this function should not be called immediately after creating a new
DOS task, since the new task is being initialized by a concurrent
process
SeeAlso: AH=E0h,AH=E2h
----------7FE2-------------------------------
INT 7F - Alloy MW386 - SWITCH TO NEW DOS TASK
AH = E2h
AL = DOS process number (from AH=E1h)
Return: CF set on error (invalid process number or caller not foreground task)
Notes: specified task becomes the foreground task and current task is placed
in the background
may only be called by a foreground task
SeeAlso: AH=E0h,AH=E1h
----------7FE3-------------------------------
INT 7F - Alloy MW386 - CHANGE NAME OF DOS TASK
AH = E3h
---v1.x---
AL = user number
---v2+---
BH = user number
BL = task number
---
DS:DX -> ASCIZ task name
Return: CF set on error (invalid process number)
SeeAlso: AH=E0h,AH=E4h,AH=E5h
----------7FE4-------------------------------
INT 7F - Alloy MW386 - GET TASK NAME FROM PROCESS NUMBER
AH = E4h
---v1.x---
AL = user number
---v2+---
BH = user number
BL = task number
---
ES:DI -> buffer for task name
Return: CF clear if successful
CL = memory size (00h=128K, 01h=256K, 02h=384K, 03h=512K, 04h=640K)
DX = task flags
bit 7: MSDOS process
ES:DI buffer filled
CF set on error (invalid process number)
SeeAlso: AH=E3h,AH=E5h
----------7FE5-------------------------------
INT 7F - Alloy MW386 - GET PROCESS NUMBER FROM TASK NAME
AH = E5h
DS:DX -> ASCIZ task name
BH = user number
Return: CF clear if successful
AL = DOS process number
CL = memory size (00h=128K, 01h=256K, 02h=384K, 03h=512K, 04h=640K)
CF set on error (no match for name)
SeeAlso: AH=E3h,AH=E4h
----------7FE6-------------------------------
INT 7F - Alloy MW386 - GET NUMBER OF AVAILABLE USER TASKS
AH = E6h
Return: AX = number of processes available to current user
SeeAlso: AH=E0h
----------7FE7-------------------------------
INT 7F - Alloy MW386 - REMOVE DOS TASK
AH = E7h
AL = DOS process number
Return: CF set on error (invalid process number or first process)
Note: can only be called by a foreground task
SeeAlso: AH=E0h
----------7FE8-------------------------------
INT 7F - Alloy MW386 - DOS TASK DELAY
AH = E8h
CX = delay time in milliseconds
Note: a delay of 0 may be used to surrender the current time slice
SeeAlso: INT 15/AX=1000h,INT 21/AH=EEh"DoubleDOS",INT 2F/AX=1680h
----------7FF0-------------------------------
INT 7F - Alloy MW386 - RESTRICT DIRECTORY TO GROUP
AH = F0h
AL = group number
DS:DX -> ASCIZ directory name
Return: CF clear if successful
AX = status
0002h directory not found
0003h directory not found
0005h directory in use, cannot be restricted
02xxh restricted to group xxh
CF set on error
Note: the restriction on the directory may be removed by calling this
function with group 0, then using AH=F1h to assign the directory to
group 0
SeeAlso: AH=F1h,AH=F2h,AH=F3h
----------7FF1-------------------------------
INT 7F - Alloy MW386 - ASSIGN DIRECTORY TO GROUP
AH = F1h
AL = group number
DS:DX -> ASCIZ directory name
Notes: performs permanent assignment to a group; no immediate action is taken
unless the directory has been restricted with AH=F0h
may be used to restrict a nonexistent directory
SeeAlso: AH=F0h
----------7FF2-------------------------------
INT 7F - Alloy MW386 - READ RESTRICTED DIRECTORY ENTRY
AH = F2h
CX = entry number
ES:DI -> 64-byte buffer
Return: CF clear if successful
buffer filled with 63-byte directory info and 1-byte group number
CF set on error (invalid entry)
SeeAlso: AH=F0h,AH=F3h
----------7FF3-------------------------------
INT 7F - Alloy MW386 - READ RESTRICTED DIRECTORY ENTRY FOR GROUP
AH = F3h
AL = group number
CX = entry number
ES:DI -> 64-byte buffer
Return: CF clear if successful
CX = next entry number
buffer filled with 63-byte directory info and 1-byte group number
CF set on error (no more matching entries)
Note: like AH=F2h, but only returns directories belonging to the specified
group
SeeAlso: AH=F2h
----------7FF8-------------------------------
INT 7F - Alloy MW386 - ASSIGN USER TO GROUP
AH = F8h
AL = group number
DL = user number
DH = machine number (currently 00h)
Return: CF clear if successful
CF set on error (user already in maximum number of groups)
Note: each user is allowed eight group assignments
SeeAlso: AH=F9h,AH=FAh
----------7FF9-------------------------------
INT 7F - Alloy MW386 - REMOVE USER FROM GROUP
AH = F9h
AL = group number
DL = user number
DH = machine number (currently 00h)
Return: CF set if failed
SeeAlso: AH=F8h,AH=FAh
----------7FFA-------------------------------
INT 7F - Alloy MW386 - GET USER GROUP LIST
AH = FAh
DL = user number
DH = machine number (currently 00h)
ES:DI -> 16-byte buffer for group list
Return: CX = number of groups
ES:DI buffer filled with group numbers
SeeAlso: AH=F8h,AH=F9h
----------7FFB-------------------------------
INT 7F - Alloy MW386 - ASSIGN GROUP NAME
AH = FBh
CL = group number
ES:DI -> ASCIZ group name (max 17 bytes)
SeeAlso: AH=FCh
----------7FFC-------------------------------
INT 7F - Alloy MW386 - GET GROUP NAME
AH = FCh
CL = group number
ES:DI -> 17-byte buffer for ASCIZ name
Return: ES:DI buffer filled
Note: if the group has not been named, "(unnamed)" is returned
SeeAlso: AH=FBh
----------80---------------------------------
INT 80 - Q-PRO4 - ???
----------80---------------------------------
INT 80 - reserved for BASIC
Note: this vector and INT 81 through INT ED are modified but not restored by
Direct Access v4.0, and may be left dangling by other programs
written with the same version of compiled BASIC
SeeAlso: INT 81"BASIC"
----------80----BX0000-----------------------
INT 80 - SoundBlaster SBFM driver - GET VERSION
BX = 0000h
Return: ???
Note: SBFM installs at a free interrupt in the range 80h through BFh
SeeAlso: BX=0008h,INT 2F/AX=FBFBh
----------80----BX0001-----------------------
INT 80 - SoundBlaster SBFM driver - SET MUSIC STATUS BYTE ADDRESS
BX = 0001h
DX:AX -> music status byte
SeeAlso: BX=0000h,BX=0002h,BX=0003h
----------80----BX0002-----------------------
INT 80 - SoundBlaster SBFM driver - SET INSTRUMENT TABLE
BX = 0002h
CX = number of instruments
DX:AX -> instrument table
SeeAlso: BX=0000h,BX=0001h,BX=0005h
----------80----BX0003-----------------------
INT 80 - SoundBlaster SBFM driver - SET SYSTEM CLOCK RATE
BX = 0003h
AX = clock rate divisor (1193180 / desired frequency in Hertz)
FFFFh to restore to 18.2 Hz
SeeAlso: BX=0000h,BX=0001h,BX=0004h
----------80----BX0004-----------------------
INT 80 - SoundBlaster SBFM driver - SET DRIVER CLOCK RATE
BX = 0004h
AX = driver clock rate divisor (1193180 / frequency in Hertz)
Note: default frequency is 96 Hz
SeeAlso: BX=0000h,BX=0003h
----------80----BX0005-----------------------
INT 80 - SoundBlaster SBFM driver - TRANSPOSE MUSIC
BX = 0005h
AX = semi-tone offset
SeeAlso: BX=0000h,BX=0002h,BX=0006h
----------80----BX0006-----------------------
INT 80 - SoundBlaster SBFM driver - PLAY MUSIC
BX = 0006h
DX:AX -> music block
Return: AX = status
0000h successful
0001h music already active
SeeAlso: BX=0000h,BX=0007h,BX=000Ah
----------80----BX0007-----------------------
INT 80 - SoundBlaster SBFM driver - STOP MUSIC
BX = 0007h
Return: AX = status
0000h successful
0001h music not active
SeeAlso: BX=0000h,BX=0006h,BX=0009h
----------80----BX0008-----------------------
INT 80 - SoundBlaster SBFM driver - RESET DRIVER
BX = 0008h
Return: AX = status
0000h successful
0001h music is active
SeeAlso: BX=0000h
----------80----BX0009-----------------------
INT 80 - SoundBlaster SBFM driver - PAUSE MUSIC
BX = 0009h
Return: AX = status
0000h successful
0001h no music active
SeeAlso: BX=0000h,BX=0007h,BX=000Ah
----------80----BX000A-----------------------
INT 80 - SoundBlaster SBFM driver - RESUME MUSIC
BX = 000Ah
Return: AX = status
0000h successful
0001h no music paused
SeeAlso: BX=0000h,BX=0006h,BX=0009h
----------80----BX000B-----------------------
INT 80 - SoundBlaster SBFM driver - SET USER-DEF TRAP FOR SYSTEM-EXCLUSIVE CMDS
BX = 000Bh
DX:AX -> trap routine
SeeAlso: BX=0000h
----------8001-------------------------------
INT 80 - QPC Software PKTINT.COM - INITIALIZE
AH = 01h
Return: AX = 0000h
CX = FFFFh
DX = FFFFh
Notes: this interrupt is the WinQVTNet protected mode interface to Windows 3.0
all buffer pointers are reset back to 0
----------8002-------------------------------
INT 80 - QPC Software PKTINT.COM - GET BUFFER ADDRESSES
AH = 02h
BX = extra bytes to allocate per packet
Return: AX = segment address of 10K buffer (for receives???)
BX = segment address of 2K buffer (for sends???)
SeeAlso: AH=05h
----------8003-------------------------------
INT 80 - QPC Software PKTINT.COM - GET ENTRY POINT
AH = 03h
Return: CX:DX -> receive call address
Note: the returned address can be used in the packet driver calls since it
will be a valid address in all DOS boxes
SeeAlso: AH=06h
----------8004-------------------------------
INT 80 - QPC Software PKTINT.COM - ENABLE???
AH = 04h
BX = ???
Return: ???
----------8005-------------------------------
INT 80 - QPC Software PKTINT.COM - GET RECEIVE STATISTICS
AH = 05h
Return: AX = amount of buffer currently in use
BX = current offset in buffer
CX = number of times receive has been called
SeeAlso: AH=02h
----------8006-------------------------------
INT 80 - QPC Software PKTINT.COM - REMOVE RECEIVED PACKET
AH = 06h
Return: BX = next packet offset
CX = number of bytes still buffered
DX = size of packet released back into buffer pool
SeeAlso: AH=03h
----------81---------------------------------
INT 81 - reserved for BASIC
Note: this vector is modified but not restored by Direct Access v4.0, and
may be left dangling by other programs written with the same version
of compiled BASIC
SeeAlso: INT 80"BASIC",INT 82"BASIC"
----------81---------------------------------
INT 81 - IBM TOKEN RING ADAPTER - ???
----------82---------------------------------
INT 82 - reserved for BASIC
SeeAlso: INT 81"BASIC",INT 83"BASIC"
----------82---------------------------------
INT 82 - IBM TOKEN RING ADAPTER - ???
AH = function
00h display message???
DS:BX -> string
???
Return: ???
----------83---------------------------------
INT 83 - reserved for BASIC
SeeAlso: INT 82"BASIC",INT 84"BASIC"
----------84---------------------------------
INT 84 - reserved for BASIC
SeeAlso: INT 83"BASIC",INT 85"BASIC"
----------85---------------------------------
INT 85 - reserved for BASIC
Note: INT 80 through INT ED are modified but not restored by Direct Access
v4.0, and may be left dangling by other programs written with the
same version of compiled BASIC
SeeAlso: INT 84"BASIC",INT 86"BASIC"
----------86---------------------------------
INT 86 - NetBIOS - ORIGINAL INT 18
Note: some implementations of NetBIOS reportedly relocate INT 18 here
SeeAlso: INT 18
----------86---------------------------------
INT 86 - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
BASIC.COM/BASICA.COM do not restore vector on termination
SeeAlso: INT 85"BASIC",INT 87"BASIC"
----------86---------------------------------
INT 86 - APL*PLUS/PC - Terminate APL session and return to DOS
SeeAlso: INT 21/AH=4Ch,INT 87"APL"
----------87---------------------------------
INT 87 - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC
BASIC.COM/BASICA.COM do not restore vector on termination
SeeAlso: INT 86"BASIC",INT 88"BASIC"
----------87---------------------------------
INT 87 - APL*PLUS/PC - ???
SeeAlso: INT 86"APL",INT 88/AL=00h
----------88---------------------------------
INT 88 - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
BASIC.COM/BASICA.COM do not restore vector on termination
SeeAlso: INT 87"BASIC",INT 89"BASIC"
----------88--00-----------------------------
INT 88 - APL*PLUS/PC - CREATE OBJECT OF ARBITRARY RANK OR SHAPE
AL = 00h
BX = STPTR of the variable to be assigned
ES:SI -> model of type, rank, and shape (see below)
Return: ES:DI -> first data byte of object
DX:CX = number of elements in the object
SeeAlso: INT C8"APL"
Format of shape model:
Offset Size Description
00h BYTE type
01h character (2-byte dimension sizes)
02h integer (2-byte dimension sizes)
08h floating point (2-byte dimension sizes)
11h character (4-byte dimension sizes)
12h integer (4-byte dimension sizes)
18h floating point (4-byte dimension sizes)
01h BYTE rank
02h WORD/DWORD first dimension of shape
N WORD/DWORD second dimension of shape
...
----------88--01-----------------------------
INT 88 - APL*PLUS/PC - CREATE CHARACTER SCALAR/VECTOR/MATRIX <64K IN SIZE
AL = 01h
AH = rank
BX = STPTR of the variable to be assigned
CX = first dimension (if any)
DX = second dimension (if any)
Return: ES:DI -> object
CX = number of elements in the object
Note: each dimension must be 32767 or smaller
SeeAlso: AL=02h,AL=08h,INT C8"APL"
----------88--02-----------------------------
INT 88 - APL*PLUS/PC - CREATE INTEGER SCALAR/VECTOR/MATRIX <64K IN SIZE
AL = 02h
AH = rank
BX = STPTR of the variable to be assigned
CX = first dimension (if any)
DX = second dimension (if any)
Return: ES:DI -> object
CX = number of elements in the object
Note: each dimension must be 32767 or smaller
SeeAlso: AL=01h,AL=08h,INT C8"APL"
----------88--08-----------------------------
INT 88 - APL*PLUS/PC - CREATE FLOATING POINT SCALAR/VECTOR/MATRIX <64K IN SIZE
AL = 08h
AH = rank
BX = STPTR of the variable to be assigned
CX = first dimension (if any)
DX = second dimension (if any)
Return: ES:DI -> object
CX = number of elements in the object
Note: each dimension must be 32767 or smaller
SeeAlso: AL=01h,AL=02h,INT C8"APL"
----------88--F5-----------------------------
INT 88 - APL*PLUS/PC - FORCE OBJECT INTO REAL WORKSPACE FROM VIRTUAL
AL = F5h
BX = STPTR of object
SeeAlso: INT C8"APL"
----------88--F6-----------------------------
INT 88 - APL*PLUS/PC - MAKE NAME IMMUNE FROM OUTSWAPPING
AL = F6h
BX = STPTR of object
SeeAlso: AL=F7h,AL=F8h,INT C8"APL"
----------88--F7-----------------------------
INT 88 - APL*PLUS/PC - MAKE NAME ELIGIBLE FOR OUTSWAPPING
AL = F7h
BX = STPTR of object
SeeAlso: AL=F6h,AL=F8h,INT C8"APL"
----------88--F8-----------------------------
INT 88 - APL*PLUS/PC - REPORT WHETHER NAME IS ELIGIBLE FOR OUTSWAPPING
AL = F8h
BX = STPTR of object
Return: BX = 0000h eligible
0001h not eligible
SeeAlso: AL=F6h,AL=F7h,INT C8"APL"
----------88--F9-----------------------------
INT 88 - APL*PLUS/PC - DETERMINE NAME STATUS
AL = F9h
ES:SI -> name
CX = length of name
Return: CF set if name ill-formed or already in use
BX = STPTR if already in symbol table
CF clear if name is available for use
BX = 0000h
Note: does not force the name into the workspace
SeeAlso: AL=FEh,AL=FFh,INT C8"APL"
----------88--FC-----------------------------
INT 88 - APL*PLUS/PC - DETERMINE IF MEMORY AVAIL WITHOUT GARBAGE COLLECTION
AL = FCh
BX = amount of memory needed (paragraphs)
Return: CF clear if memory available
CF set if a workspace compaction is required
SeeAlso: AL=FDh,INT C8"APL"
----------88--FD-----------------------------
INT 88 - APL*PLUS/PC - PERFORM GARBAGE COLLECTION AND RETURN AVAILABLE MEMORY
AL = FDh
Return: BX = number of paragraphs available in workspace
SeeAlso: AL=FCh,INT C8"APL"
----------88--FE-----------------------------
INT 88 - APL*PLUS/PC - CREATE NAME
AL = FEh
ES:SI -> name
CX = length of name
Return: BX = STPTR of name
DX = interpreter's data segment
SeeAlso: AL=F9h,AL=FFh,INT C8"APL"
----------88--FF-----------------------------
INT 88 - APL*PLUS/PC - DETERMINE NAME STATUS
AL = FFh
ES:SI -> name
CX = length of name
Return: CF set if name ill-formed or already in use
BX = STPTR if already in symbol table
CF clear if name is available for use
BX = 0000h
Note: forces the name into the workspace and makes it immune from outswapping
SeeAlso: AL=F9h,AL=FEh,INT C8"APL"
----------89---------------------------------
INT 89 - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC
BASIC.COM/BASICA.COM do not restore vector on termination
SeeAlso: INT 88"BASIC",INT 8A"BASIC"
----------8A---------------------------------
INT 8A - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC
BASIC.COM/BASICA.COM do not restore vector on termination
SeeAlso: INT 89"BASIC",INT 8B"BASIC"
----------8A---------------------------------
INT 8A - APL*PLUS/PC - PRINT SCREEN
Note: same as INT 05
SeeAlso: INT 05,INT 8C"APL",INT CA"APL"
----------8B---------------------------------
INT 8B - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
BASIC.COM/BASICA.COM do not restore vector on termination
SeeAlso: INT 8A"BASIC",INT 8C"BASIC"
----------8B---------------------------------
INT 8B - APL*PLUS/PC - BEEP
Note: same as printing a ^G via INT 21/AH=02h
SeeAlso: INT 21/AH=02h,INT CB"APL"
----------8C---------------------------------
INT 8C - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
BASIC.COM/BASICA.COM do not restore vector on termination
----------8C---------------------------------
INT 8C - APL*PLUS/PC - CLEAR SCREEN MEMORY
AX = flag
0000h do not save display attributes
0001h save attributes
SeeAlso: INT CC"APL"
----------8D---------------------------------
INT 8D - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
BASIC.COM/BASICA.COM do not restore vector on termination
----------8E---------------------------------
INT 8E - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
BASIC.COM/BASICA.COM do not restore vector on termination
----------8F---------------------------------
INT 8F - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
BASIC.COM/BASICA.COM do not restore vector on termination
----------90---------------------------------
INT 90 - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
BASIC.COM/BASICA.COM do not restore vector on termination
----------90---------------------------------
INT 90 - APL*PLUS/PC - USED BY PORT 10 PRINTER DRIVER
----------91---------------------------------
INT 91 - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
BASIC.COM/BASICA.COM do not restore vector on termination
----------91---------------------------------
INT 91 - IBM TOKEN RING ADAPTER - ???
----------92---------------------------------
INT 92 - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
BASIC.COM/BASICA.COM do not restore vector on termination
----------92---------------------------------
INT 92 - Sangoma X.25 INTERFACE PROGRAM
BX:DX -> control block
SeeAlso: INT 68"Sangoma"
----------92E1-------------------------------
INT 92 - Da Vinci eMail Dispatcher INTERFACE
AH = E1h
AL = function
BX = stack count (number of words to push)
CX:DX -> stack data (in word-reversed order ready to push)
Return: AX = status
0001h success
FF97h "ERS_NOT_AVAILABLE"
FF99h "ERS_TOO_MANY_NAMES"
FF9Ah "ERS_BAD_NAME_PASSWORD"
FFE3h "ERS_NAME_NOT_FOUND"
FFF8h "ERS_USE_STRING" (call NetGetError to get error string)
FFFFh "ERS_NO_SUCH_FILE"
Note: preserves BP, DS, SI, DI; other registers may be destroyed
----------92E100BX000A-----------------------
INT 92 - Da Vinci eMail Dispatcher - "NetInitStart"
AX = E100h
BX = 000Ah
CX:DX -> parameter block (see below)
Return: AX = 0001h success
Note: this function is used to initialize the dispatcher
SeeAlso: AX=E101h,AX=E103h
Format of parameter block:
Offset Size Description
00h WORD segment of ???
02h WORD offset of ???
04h WORD high part of long ???
06h WORD low part of long ???
08h WORD high part of long ???
0Ah WORD low part of long ???
0Ch WORD high part of long ???
0Eh WORD low part of long ???
10h WORD high part of long ???
12h WORD low part of long ???
----------92E101BX0000-----------------------
INT 92 - Da Vinci eMail Dispatcher - "NetInitCheck"
AX = E101h
BX = 0000h
CX:DX ignored
Return: AX = 0001h success
SeeAlso: AX=E100h
----------92E102BX0000-----------------------
INT 92 - Da Vinci eMail Dispatcher - "NetCheckDriver"
AX = E102h
BX = 0000h
CX:DX ignored
Return: AX = 0001h success
Note: this function is used to determine if the dispatcher is loaded
SeeAlso: AX=E10Bh,AX=E180h
----------92E103BX0000-----------------------
INT 92 - Da Vinci eMail Dispatcher - "NetTerminate"
AX = E103h
BX = 0000h
CX:DX ignored
Return: AX = status (see AH=E1h)
SeeAlso: AX=E100h
----------92E104BX0006-----------------------
INT 92 - Da Vinci eMail Dispatcher - "NetWhereIs"
AX = E104h
BX = 0006h
CX:DX -> parameter block (see below)
Return: AX = status (see AH=E1h)
Note: this function is used to verify node address for usernames
Format of parameter block:
Offset Size Description
00h WORD segment of node address buffer
02h WORD offset of node address buffer
04h WORD segment of uppercase username
06h WORD offset of uppercase username
08h WORD segment of "DVSEMAIL"
0Ah WORD offset of "DVSEMAIL"
----------92E105BX0007-----------------------
INT 92 - Da Vinci eMail Dispatcher - "NetOpen"
AX = E105h
BX = 0007h
CX:DX -> parameter block (see below)
Return: AX = 0000h Error
AX = handle
Note: this function is used to open a submission channel
SeeAlso: AX=E10Ah
Format of parameter block:
Offset Size Description
00h WORD operation (1 = read, 2 = write)
02h WORD segment of uppercase To: username
04h WORD offset of uppercase To: username
06h WORD segment of "DVSEMAIL"
08h WORD offset of "DVSEMAIL"
0Ah WORD segment of node address
0Ch WORD offset of node address
----------92E106BX0004-----------------------
INT 92 - Da Vinci eMail Dispatcher - "NetRead"
AX = E106h
BX = 0004h
CX:DX -> parameter block
Return: AX = 0001h
SeeAlso: AX=E108h
----------92E107BX0002-----------------------
INT 92 - Da Vinci eMail Dispatcher - "NetGetError"
AX = E107h
BX = 0002h
CX:DX -> parameter block
Return: AX = 0001h
----------92E108BX0004-----------------------
INT 92 - Da Vinci eMail Dispatcher - "NetWrite"
AX = E108h
BX = 0004h
CX:DX -> parameter block (see below)
Return: AX = amount written
Note: this function is used to write transactions to the dispatcher.
The command block is written first and then another call is used
to write the associated data.
SeeAlso: AX=E106h
Format of parameter block:
Offset Size Description
00h WORD buffer count
02h WORD segment of command buffer
04h WORD offset of command buffer
06h WORD handle from NetOpen
Format of command buffer:
Offset Size Description
00h BYTE command
21h '!' Protocol commands for remote control
41h 'A' Authorization protocol element
42h 'B' Return(back) routing information
Associated data is the From: username
43h 'C' Carbon Copy list
Associated data is a comma delimitted list of usernames
44h 'D' Distribution list
Associated data is a comma delimitted list of usernames
45h 'E' Mail end marker
No associated data
48h 'H' Mail message header
Associated data is a message header buffer
4Dh 'M' Mail message
Associated data is the body of the message
4Fh 'O' Object
50h 'P' Paperclip attachment
52h 'R' Routing information
Associated data is the To: username
53h 'S' Subject
Associated data is the subject of the message
54h 'T' Trail of Reply/Forwards
01h BYTE subcommand
02h DWORD length of associated data
Format of message header buffer:
Offset Size Description
00h 30 BYTEs subject line
1Eh 24 BYTEs To
36h 24 BYTEs From
4Eh DWORD Time
BYTE 0
BYTE hour
BYTE minute
BYTE second
52h DWORD Date
BYTE 0
BYTE year
BYTE month
BYTE day
56h DWORD serial number (0L)
5Ah WORD mail types
bit 7 blind carbon copy
bit 6 carbon copy
bit 5 priority
bit 4 confidential
bit 3 certified
bit 2 bulk
bits 1-0 class (first, second, third, bulk)
5Ch WORD special types (0)
----------92E109BX0001-----------------------
INT 92 - Da Vinci eMail Dispatcher - "NetErrorFix" (UNUSED)
AX = E109h
BX = 0001h
CX:DX -> ???
Return: AX = FF97h (ERS_NOT_AVAILABLE)
----------92E10ABX0001-----------------------
INT 92 - Da Vinci eMail Dispatcher - "NetClose"
AX = E10Ah
BX = 0001h
CX:DX -> parameter block (see below)
Return: AX = 0001h
Note: this function is used to close a dispatcher handle
SeeAlso: AX=E105h
Format of parameter block:
Offset Size Description
00h WORD handle from NetOpen
----------92E10BBX0004-----------------------
INT 92 - Da Vinci eMail Dispatcher - "NetCheckQueue"
AX = E10Bh
BX = 0004h
CX:DX -> parameter block (see below)
Return: AX = 0001h
SeeAlso: AX=E102h,AX=E10Ch
Format of parameter block:
Offset Size Description
00h WORD segment of 24 byte username buffer
02h WORD offset of 24 byte username buffer
04h WORD segment of 24 byte protocol buffer
06h WORD offset of 24 byte protocol buffer
----------92E10CBX0002-----------------------
INT 92 - Da Vinci eMail Dispatcher - "NetReadQueue"
AX = E10Ch
BX = 0002h
CX:DX -> parameter block (see below)
Return: AX = 0001h
SeeAlso: AX=E10Bh
Format of parameter block:
Offset Size Description
00h WORD Segment of 128 byte node address buffer
02h WORD Offset of 128 byte node address buffer
----------92E10DBX0006-----------------------
INT 92 - Da Vinci eMail Dispatcher - "NetSubmitName"
AX = E10Dh
BX = 0006h
CX:DX -> parameter block (see below)
Return: AX = status (see AH=E1h)
Note: this function is used to verify username/password
SeeAlso: AX=E10Eh
Format of parameter block:
Offset Size Description
00h WORD segment of uppercase password string
02h WORD offset of uppercase password string
04h WORD segment of uppercase username string
06h WORD offset of uppercase username string
08h WORD segment of "DVSEMAIL"
0Ah WORD offset of "DVSEMAIL"
----------92E10EBX0004-----------------------
INT 92 - Da Vinci eMail Dispatcher - "NetRemoveName"
AX = E10Eh
BX = 0004h
CX:DX -> parameter block (see below)
Return: AX = 0001h
Note: this function is used to remove a username
SeeAlso: AX=E10Dh
Format of parameter block:
Offset Type Description
00h WORD segment of uppercase username
02h WORD offset of uppercase username
04h WORD segment of "DVSEMAIL"
06h WORD offset of "DVSEMAIL"
----------92E10FBX0000-----------------------
INT 92 - Da Vinci eMail Dispatcher - IS ANYONE THERE? QUERY
AX = E10Fh
BX = 0000h
CX:DX ignored
Return: AX = 0001h
----------92E110BX0006-----------------------
INT 92 - Da Vinci eMail Dispatcher - "NetGetAltRoute"
AX = E110h
BX = 0006h
CX:DX -> ???
Return: AX = 0001h
SeeAlso: AX=E111h,AX=E113h
----------92E111BX0004-----------------------
INT 92 - Da Vinci eMail Dispatcher - "NetDeleteAltRoutes"
AX = E111h
BX = 0004h
CX:DX -> ???
Return: AX = 0001h
SeeAlso: AX=E110h,AX=E113h
----------92E112BX0008-----------------------
INT 92 - Da Vinci eMail Dispatcher - "NetChangePassword"
AX = E112h
BX = 0008h
CX:DX -> ???
Return: AX = 0001h
----------92E113BX0008-----------------------
INT 92 - Da Vinci eMail Dispatcher - "NetSetAltRoute"
AX = E113h
BX = 0008h
CX:DX -> ???
Return: AX = 0001h
SeeAlso: AX=E110h,AX=E111h
----------92E175-----------------------------
INT 92 - Da Vinci eMail Dispatcher - BECOME MICRO TSR
AX = E175h
Return: AX = 0012h
BX = PSP
----------92E180-----------------------------
INT 92 - Da Vinci eMail Dispatcher - INSTALLATION CHECK
AX = E180h
Return: AX = 0012h if installed
ES:DX -> '$'-terminated driver information string
SeeAlso: AX=E102h
----------93---------------------------------
INT 93 - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC
BASIC.COM/BASICA.COM do not restore vector on termination
----------93---------------------------------
INT 93 - IBM TOKEN RING ADAPTER - ???
----------94---------------------------------
INT 94 - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
BASIC.COM/BASICA.COM do not restore vector on termination
----------95---------------------------------
INT 95 - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC
BASIC.COM/BASICA.COM do not restore vector on termination
----------95---------------------------------
INT 95 - APL*PLUS/PC - DETERMINE R= SPACE
Note: use only when the R= option is invoked on entering APL
----------96---------------------------------
INT 96 - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC
BASIC.COM/BASICA.COM do not restore vector on termination
----------97---------------------------------
INT 97 - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC
BASIC.COM/BASICA.COM do not restore vector on termination
----------98---------------------------------
INT 98 - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
BASIC.COM/BASICA.COM do not restore vector on termination
----------99---------------------------------
INT 99 - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
BASIC.COM/BASICA.COM do not restore vector on termination
----------9A---------------------------------
INT 9A - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
BASIC.COM/BASICA.COM do not restore vector on termination
----------9B---------------------------------
INT 9B - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
BASIC.COM/BASICA.COM do not restore vector on termination
----------9C---------------------------------
INT 9C - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
BASIC.COM/BASICA.COM do not restore vector on termination
----------9D---------------------------------
INT 9D - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
BASIC.COM/BASICA.COM do not restore vector on termination
----------9E---------------------------------
INT 9E - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
BASIC.COM/BASICA.COM do not restore vector on termination
----------9F---------------------------------
INT 9F - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC
BASIC.COM/BASICA.COM do not restore vector on termination
----------A0---------------------------------
INT A0 - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC
BASIC.COM/BASICA.COM do not restore vector on termination
----------A0---------------------------------
INT A0 - APL*PLUS/PC - USED BY APL/GSS*CGI GRAPHICS INTERFACE
SeeAlso: INT 59
----------A1---------------------------------
INT A1 - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
BASIC.COM/BASICA.COM do not restore vector on termination
----------A2---------------------------------
INT A2 - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC
BASIC.COM/BASICA.COM do not restore vector on termination
----------A3---------------------------------
INT A3 - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC
BASIC.COM/BASICA.COM do not restore vector on termination
----------A4---------------------------------
INT A4 - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
BASIC.COM/BASICA.COM do not restore vector on termination
----------A4---------------------------------
INT A4 U - Right Hand Man - API
AH = function number (v3.3 supports functions 00h-52h)
Return: CF set on error
CF clear if successful
Program: Right Hand Man is a TSR desk-top utility originally by Red E Products
which has evolved into Futurus Team
Note: this interrupt is only hooked while popped up
SeeAlso: INT 2F/AX=A4E0h
----------A5---------------------------------
INT A5 - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
BASIC.COM/BASICA.COM do not restore vector on termination
----------A6---------------------------------
INT A6 - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC
BASIC.COM/BASICA.COM do not restore vector on termination
----------A7---------------------------------
INT A7 - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC
BASIC.COM/BASICA.COM do not restore vector on termination
----------A8---------------------------------
INT A8 - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC
BASIC.COM/BASICA.COM do not restore vector on termination
----------A9---------------------------------
INT A9 - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC
BASIC.COM/BASICA.COM do not restore vector on termination
----------AA---------------------------------
INT AA - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
BASIC.COM/BASICA.COM do not restore vector on termination
----------AB---------------------------------
INT AB - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC
BASIC.COM/BASICA.COM do not restore vector on termination
----------AC---------------------------------
INT AC - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC
BASIC.COM/BASICA.COM do not restore vector on termination
----------AD---------------------------------
INT AD - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC
BASIC.COM/BASICA.COM do not restore vector on termination
----------AE---------------------------------
INT AE - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
BASIC.COM/BASICA.COM do not restore vector on termination
----------AF---------------------------------
INT AF - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC
BASIC.COM/BASICA.COM do not restore vector on termination
----------B0---------------------------------
INT B0 - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
BASIC.COM/BASICA.COM do not restore vector on termination
----------B1---------------------------------
INT B1 - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
BASIC.COM/BASICA.COM do not restore vector on termination
----------B2---------------------------------
INT B2 - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC
BASIC.COM/BASICA.COM do not restore vector on termination
----------B3---------------------------------
INT B3 - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
BASIC.COM/BASICA.COM do not restore vector on termination
----------B370-------------------------------
INT B3 - ZIPKEY - GET VERSION
AH = 70h
Return: AH = major version
AL = minor version
CL = number of states and territories in current database
DH = year of current database - 1900
DL = month of current database's file date
Return: AX destroyed
Notes: if installed, the string "ZIPKEY" is present at offset 75h in the
interrupt handler's segment, and the byte at 7Bh contains the API
version number (00h for v1.x, 01h for v2.0)
ZIPKEY is a resident ZIPCODE database by Eric Isaacson
----------B371-------------------------------
INT B3 - ZIPKEY - CONVERT TWO-LETTER ABBREVIATION TO STATE CODE
AH = 71h
BX = abbreviation, in either case (first letter in BL)
Return: CF set on error
AL = FFh
CF clear if successful
AL = ZIPKEY state code
SeeAlso: AH=72h
----------B372-------------------------------
INT B3 - ZIPKEY - CONVERT STATE CODE TO TWO-LETTER ABBREVIATION
AH = 72h
BL = ZIPKEY state code
Return: CF set on error
AX destroyed
CF clear if successful
AX = abbreviation, in upper case
SeeAlso: AH=71h,AH=73h
----------B373-------------------------------
INT B3 - ZIPKEY - CONVERT STATE CODE TO STATE NAME
AH = 73h
BL = ZIPKEY state code
ES:DI -> buffer for name
Return: CF set on error
AX destroyed
CF clear if successful
ES:DI points one byte beyond end of name
SeeAlso: AH=72h
----------B374-------------------------------
INT B3 - ZIPKEY - CONVERT ZIPCODE TO ASCII DIGITS
AH = 74h
DX = zipcode region (0-999)
CH = last two digits of zipcode (0-99)
ES:DI -> buffer
Return: CF set on error
AX destroyed
CF clear if successful
ES:DI points one byte beyond end of digit string
----------B375-------------------------------
INT B3 - ZIPKEY - LOOK UP STATE CODE FOR ZIPCODE
AH = 75h
DX = zipcode region (0-999)
CH = last two digits of zipcode (0-99)
Return: CF set on error (zipcode not found)
AL = suggested state code, FFh if none
CF clear if successful
AL = ZIPKEY state code
BX = area code (v2.0+)
SeeAlso: AH=76h,AH=79h
----------B376-------------------------------
INT B3 - ZIPKEY - LOOK UP CITY AND STATE FOR ZIPCODE
AH = 76h
DX = zipcode region (0-999)
CH = last two digits of zipcode (0-99)
ES:DI -> buffer for name
Return: CF set on error
AL = suggested state code, FFh if none
ES:DI buffer filled with suggested city name
CF clear if successful
AL = ZIPKEY state code
BX = area code (v2.0+)
ES:DI points one byte beyond end of name
SeeAlso: AH=75h,AH=78h
----------B377-------------------------------
INT B3 - ZIPKEY - PLAY BACK EXIT KEY FOR ENTRY WITH GIVEN ZIPCODE
AH = 77h
DX = zipcode region (0-999)
CH = last two digits of zipcode (0-99)
BX = 16-bit BIOS keycode for a defined ZIPKEY alternate exit key
Return: CF set on error
AX destroyed
CF clear if successful
zipcode specification as defined by the BX keystroke is placed in
keyboard buffer, as if the user had popped up ZIPKEY and exited
by pressing the key specified by BX
----------B378-------------------------------
INT B3 - ZIPKEY - LOOK UP ZIPCODES FOR A GIVEN STATE AND CITY
AH = 78h
BL = ZIPKEY state code
DS:SI -> city name, terminated with 0Dh if complete name, 00h if prefix
Return: BH = number of matching entries (set to 51 if more than 50)
DX = zipcode region of first match (0-999)
CL = last two digits of first zipcode in the range (0-99)
CH = last two digits of last zipcode in the range (0-99)
AX destroyed
SeeAlso: AH=79h,AH=7Ah
----------B379-------------------------------
INT B3 - ZIPKEY - LOOK UP ZIPCODES FOR A GIVEN CITY
AH = 79h
BL = ZIPKEY state code of first state to search
DS:SI -> city name, terminated with 0Dh if complete name, 00h if prefix
Return: AL = ZIPKEY state code of first matching state
BH = number of matching entries (set to 51 if more than 50)
DX = zipcode region of first match (0-999)
CL = last two digits of first zipcode in first range (0-99)
CH = last two digits of last zipcode in first range (0-99)
Note: to find all matching cities, repeat search with BL set to one more than
the returned AL
SeeAlso: AH=78h,AH=7Ah
----------B37A-------------------------------
INT B3 - ZIPKEY - FETCH AN ENTRY FROM A PREVIOUS LOOKUP
AH = 7Ah
BL = case number (0 to one less than value returned in BH by lookup)
Return: AL = ZIPKEY state code
DX = zipcode region (0-999)
CL = last two digits of first zipcode in the range (0-99)
CH = last two digits of last zipcode in the range (0-99)
SeeAlso: AH=78h,AH=79h
----------B37B-------------------------------
INT B3 - ZIPKEY - GET VALUES NEEDED TO SAVE ZIPKEY CONTEXT
AH = 7Bh
Return: BL = maximum number of characters for a city name
BH = ZIPKEY state code for last city-name search
FFh if none
CX:DX = internal code identifying last city search
AX destroyed
SeeAlso: AH=7Ch
----------B37C-------------------------------
INT B3 - ZIPKEY - RESTORE ZIPKEY CONTEXT
AH = 7Ch
BL = maximum number of characters for a city name
BH = ZIPKEY state code for last city-name search
FFh if none
CX:DX = internal code returned by AH=7Bh
Return: CF set on error
CF clear if successful
AX destroyed
SeeAlso: AH=7Bh
----------B37D-------------------------------
INT B3 - ZIPKEY - REQUEST POP UP
AH = 7Dh
BL = index number to simulate pressing a hotkey
FFh for immediate popup with no playback on return
Return: CF set on error
AL = FDh already busy with another request
= FEh illegal function
CF clear if successful
AX destroyed
window popped up and was closed by the user
----------B37E-------------------------------
INT B3 - ZIPKEY - GET NAME OF PRIMARY CITY FOR A ZIPCODE REGION
AH = 7Eh
DX = zipcode region (0-999)
ES:DI -> buffer for name
Return: CF set on error
AL = FFh region does not exist
CF clear if successful
AL = ZIPKEY state code
ES:DI points one byte beyond end of name
----------B37F-------------------------------
INT B3 - ZIPKEY - ENABLE/DISABLE HOTKEYS
AH = 7Fh
BL = function
00h turn off hotkeys
01h turn on hotkeys
02h return hotkey status
03h toggle hotkey status
Return: AL = hotkey status
00h off
01h on
----------B380-------------------------------
INT B3 - ZIPKEY v2.0+ - DETERMINE STATE FOR AREA CODE
AH = 80h
BX = telephone area code (decimal)
Return: CF clear if successful
AL = ZIPKEY state code
DX = first ZIP region for state (03E8h if Canada)
CX = number of ZIP regions in state
CF set on error
AL = FFh
DX = 03E9h
----------B4---------------------------------
INT B4 - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC
BASIC.COM/BASICA.COM do not restore vector on termination
----------B4---------------------------------
INT B4 - STACKMAN - REQUEST NEW STACK
Return: SS:SP -> new stack
Note: the installation check consists of testing for the string "STACKXXX" at
offset 0Ah from the interrupt handler
SeeAlso: INT 2F/AX=C9FFh,INT B5"STACKMAN"
----------B5---------------------------------
INT B5 - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
BASIC.COM/BASICA.COM do not restore vector on termination
----------B5---------------------------------
INT B5 - STACKMAN - RESTORE ORIGINAL STACK
SS:SP -> stack returned by INT B4
Return: SS:SP restored to value before INT B4
SeeAlso: INT 2F/AX=C9FFh,INT B4"STACKMAN"
----------B6---------------------------------
INT B6 - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC
BASIC.COM/BASICA.COM do not restore vector on termination
----------B7---------------------------------
INT B7 - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
BASIC.COM/BASICA.COM do not restore vector on termination
----------B8---------------------------------
INT B8 - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC
BASIC.COM/BASICA.COM do not restore vector on termination
----------B9---------------------------------
INT B9 - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
BASIC.COM/BASICA.COM do not restore vector on termination
----------BA---------------------------------
INT BA - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
BASIC.COM/BASICA.COM do not restore vector on termination
----------BB---------------------------------
INT BB - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
BASIC.COM/BASICA.COM do not restore vector on termination
----------BC---------------------------------
INT BC - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
BASIC.COM/BASICA.COM do not restore vector on termination
----------BD---------------------------------
INT BD - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
BASIC.COM/BASICA.COM do not restore vector on termination
----------BE---------------------------------
INT BE - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
BASIC.COM/BASICA.COM do not restore vector on termination
----------BE---------------------------------
INT BE - DESQview/X - ???
Note: points at an IRET
SeeAlso: INT 15/AX=BFDEh/BX=0006h,INT 63"DESQview"
----------BF---------------------------------
INT BF - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
BASIC.COM/BASICA.COM do not restore vector on termination
----------C0---------------------------------
INT C0 - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
BASIC.COM/BASICA.COM do not restore vector on termination
----------C1---------------------------------
INT C1 - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
BASIC.COM/BASICA.COM do not restore vector on termination
----------C2---------------------------------
INT C2 - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
BASIC.COM/BASICA.COM do not restore vector on termination
----------C3---------------------------------
INT C3 - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
BASIC.COM/BASICA.COM do not restore vector on termination
----------C4---------------------------------
INT C4 - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
BASIC.COM/BASICA.COM do not restore vector on termination
----------C5---------------------------------
INT C5 - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC
BASIC.COM/BASICA.COM do not restore vector on termination
----------C6---------------------------------
INT C6 - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
BASIC.COM/BASICA.COM do not restore vector on termination
----------C6---------------------------------
INT C6 - APL*PLUS/PC - IDENTICAL TO INT 86
Note: STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete
the older interrupts
SeeAlso: INT 86"APL"
----------C7---------------------------------
INT C7 - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
BASIC.COM/BASICA.COM do not restore vector on termination
----------C7---------------------------------
INT C7 - APL*PLUS/PC - ???
Note: STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete
the older interrupts
SeeAlso: INT 87"APL"
----------C8---------------------------------
INT C8 - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
BASIC.COM/BASICA.COM do not restore vector on termination
----------C8---------------------------------
INT C8 - APL*PLUS/PC - IDENTICAL TO INT 88
Note: STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete
the older interrupts
SeeAlso: INT 88"APL"
----------C9---------------------------------
INT C9 - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
BASIC.COM/BASICA.COM do not restore vector on termination
----------C9---------------------------------
INT C9 - APL*PLUS/PC - ???
Note: STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete
the older interrupts
SeeAlso: INT 89"APL"
----------CA---------------------------------
INT CA - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
BASIC.COM/BASICA.COM do not restore vector on termination
----------CA---------------------------------
INT CA - APL*PLUS/PC - PRINT SCREEN
Note: STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete
the older interrupts
SeeAlso: INT 8A"APL"
----------CB---------------------------------
INT CB - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
BASIC.COM/BASICA.COM do not restore vector on termination
----------CB---------------------------------
INT CB - APL*PLUS/PC - BEEP
Notes: STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete
the older interrupts
same as printing a ^G via INT 21/AH=02h
SeeAlso: INT 8B"APL"
----------CC---------------------------------
INT CC - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
BASIC.COM/BASICA.COM do not restore vector on termination
----------CC---------------------------------
INT CC - APL*PLUS/PC - CLEAR SCREEN MEMORY
AX = flag
0000h do not save display attributes
0001h save attributes
Note: STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete
the older interrupts
SeeAlso: INT 8C"APL"
----------CD---------------------------------
INT CD - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
BASIC.COM/BASICA.COM do not restore vector on termination
----------CD---------------------------------
INT CD - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
----------CE---------------------------------
INT CE - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
BASIC.COM/BASICA.COM do not restore vector on termination
----------CE---------------------------------
INT CE - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
----------CF---------------------------------
INT CF - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
BASIC.COM/BASICA.COM do not restore vector on termination
----------CF---------------------------------
INT CF - APL*PLUS/PC - DEFAULT LOW-RESOLUTION TIMER FOR QUAD MF FUNCTION
SeeAlso: INT E0"APL"
----------D0---------------------------------
INT D0 - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
BASIC.COM/BASICA.COM do not restore vector on termination
----------D0---------------------------------
INT D0 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
----------D0---------------------------------
INT D0 - [not a vector!] - NJFRERAM SIGNATURE VECTOR
Notes: NJFRERAM is a resident free-memory display utility by Mike "Nifty
James" Blaszczak
if NJFRERAM is installed, this vector points at the signature "NJ"
----------D1---------------------------------
INT D1 - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
BASIC.COM/BASICA.COM do not restore vector on termination
----------D1---------------------------------
INT D1 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
----------D2---------------------------------
INT D2 - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
BASIC.COM/BASICA.COM do not restore vector on termination
----------D2---------------------------------
INT D2 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
----------D3---------------------------------
INT D3 - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
BASIC.COM/BASICA.COM do not restore vector on termination
----------D3---------------------------------
INT D3 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
----------D4---------------------------------
INT D4 - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC
BASIC.COM/BASICA.COM do not restore vector on termination
----------D4---------------------------------
INT D4 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
----------D4---------------------------------
INT D4 - PC-MOS/386 - API
----------D5---------------------------------
INT D5 - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
BASIC.COM/BASICA.COM do not restore vector on termination
----------D5---------------------------------
INT D5 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
----------D6---------------------------------
INT D6 - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
BASIC.COM/BASICA.COM do not restore vector on termination
----------D6---------------------------------
INT D6 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
----------D7---------------------------------
INT D7 - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
BASIC.COM/BASICA.COM do not restore vector on termination
----------D7---------------------------------
INT D7 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
----------D8---------------------------------
INT D8 - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC
BASIC.COM/BASICA.COM do not restore vector on termination
----------D8---------------------------------
INT D8 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
----------D9---------------------------------
INT D9 - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
BASIC.COM/BASICA.COM do not restore vector on termination
----------D9---------------------------------
INT D9 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
----------DA---------------------------------
INT DA - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
BASIC.COM/BASICA.COM do not restore vector on termination
----------DA---------------------------------
INT DA - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
----------DB---------------------------------
INT DB - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC
BASIC.COM/BASICA.COM do not restore vector on termination
----------DB---------------------------------
INT DB - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
----------DC---------------------------------
INT DC - PC/370 v4.1- - API
SeeAlso: INT 60"PC/370"
----------DC---------------------------------
INT DC - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC
BASIC.COM/BASICA.COM do not restore vector on termination
----------DC---------------------------------
INT DC - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
----------DD---------------------------------
INT DD - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC
BASIC.COM/BASICA.COM do not restore vector on termination
----------DD---------------------------------
INT DD - STSC APL*PLUS/PC v9.0 - PLACE KEYSTROKE EVENTS IN INPUT BUFFER
BX = where to place keystrokes
FFFFh insert before current buffer contents
0000h replace current contents
0001h insert after current contents
CX = number of keystroke events to insert
ES:SI -> data to be placed into buffer (list of WORD key codes)
4000h + N = normal ASCII keystroke N (N = 00h to FFh)
4100h + N = extended ASCII keystroke N (N = 03h to 84h)
SeeAlso: INT 16/AH=05h
----------DE---------------------------------
INT DE - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC
BASIC.COM/BASICA.COM do not restore vector on termination
----------DE---------------------------------
INT DE - APL*PLUS/PC - ???
Note: appears to be the same as INT 16
----------DF---------------------------------
INT DF - Victor 9000 - SuperBIOS
----------DF---------------------------------
INT DF - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC
BASIC.COM/BASICA.COM do not restore vector on termination
----------DF---------------------------------
INT DF - APL*PLUS/PC - SAME AS INT 10
SeeAlso: INT 10
----------E0---------------------------------
INT E0 - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC
BASIC.COM/BASICA.COM do not restore vector on termination
----------E0---------------------------------
INT E0 - APL*PLUS/PC - RESTIME HIGH-RESOLUTION TIMER FOR QUAD MF FUNCTION
SeeAlso: INT CF"APL"
----------E0---------------------------------
INT E0 - VIRUS - "Micro-128" - ???
Note: Micro-128 also overwrites the upper half of the interrupt table
SeeAlso: INT 70"VIRUS"
----------E0---------------------------------
INT E0 - CP/M-86, Concurrent CP/M, DR Multiuser DOS - FUNCTION CALLS
CL = function number
DS,DX = parameters
Return: as appropriate for function
Notes: several functions are covered in more detail in following entries
most of these calls are also supported by Digital Research's DOS Plus
v2.1; the unsupported functions are 26h,29h-2Bh,3Ah,3Dh-62h,71h-8Ch,
90h-92h,94h-97h,9Bh-ABh, and AEh-FFh
SeeAlso: INT 21/AX=4459h,INT 21/AH=E0h"DOS Plus"
Values for function number:
00h terminate calling process (see also INT 21/AH=00h)
01h read a character
02h write character to default console (see also INT 21/AH=02h)
03h read character from default AUX (see also INT 21/AH=03h)
04h write character to default AUX (see also INT 21/AH=04h)
05h write character to default list device (see also INT 21/AH=05h)
06h perform raw I/O on default console (see also INT 21/AH=06h)
07h return default AUX input status
08h return default AUX output status
09h write string to default console (see also INT 21/AH=09h)
0Ah read string from default console (see also INT 21/AH=0Ah)
0Bh return default console input status (see also INT 21/AH=0Bh)
0Ch get BDOS release ID
0Dh reset all disk drives (see also INT 21/AH=0Dh)
0Eh set default drive (see also INT 21/AH=0Eh)
0Fh open file via FCB (see also INT 21/AH=0Fh)
10h close file via FCB (see also INT 21/AH=10h)
11h search for first matching file with FCB (see also INT 21/AH=11h)
12h search for next matching file with FCB (see also INT 21/AH=12h)
13h delete file via FCB (see also INT 21/AH=13h)
14h sequential read via FCB (see also INT 21/AH=14h)
15h sequential write via FCB (see also INT 21/AH=15h)
16h create file via FCB (see also INT 21/AH=16h)
17h rename file via FCB (see also INT 21/AH=17h)
18h get bit map of logged drives
19h get default drive (see also INT 21/AH=19h)
1Ah set DMA address offset
1Bh get default disk allocation vector (see also INT 21/AH=1Bh)
1Ch set default drive to read-only
1Dh get bit map of read-only drives
1Eh set file attributes via FCB (see also INT 21/AX=4301h)
1Fh get address of disk parameter block (see also INT 21/AH=1Fh)
20h get/set default user number
21h read random record via FCB (see also INT 21/AH=21h)
22h write random record via FCB (see also INT 21/AH=22h)
23h compute file size with FCB (see also INT 21/AH=23h)
24h get FCB random record number (see also INT 21/AH=24h)
25h reset specified drives
26h access specified drives (not in DR DOS Plus v2.1)
27h free specified drives
28h write random with FCB, zero fill (see also also INT 21/AH=28h)
2Ah lock records in FCB file (see also INT 21/AH=5Ch)
2Bh unlock records in FCB file (see also INT 21/AH=5Ch)
2Ch set BDOS multisector count
2Dh set BDOS error mode
2Eh get free space on disk
2Fh load, initialize, and jump to process (see also INT 21/AH=4Bh)
30h flush write-deferred buffers
31h get/set system variable (DOS Plus v2.1)
32h call BIOS (XIOS) character routine (see below)
33h set DMA address segment
34h get DMA buffer address
35h CP/M-86 allocate maximum memory
36h allocate maximum memory at specified segment
37h CP/M-86 allocate memory segment (see also INT 21/AH=48h)
38h allocate memory at specified segment
39h CP/M-86 free specified memory segment (see also INT 21/AH=49h)
3Ah CP/M-86 free all memory (not in DOS Plus v2.1)
3Bh load .CMD file into memory
3Ch (DOS Plus v2.1) call RSX program
40h (DR-NET) log on a server
41h (DR-NET) log off a server
42h (DR-NET) send a message
43h (DR-NET) receive a message
44h (DR-NET) get network status
45h (DR-NET) get requestor configuration table
46h (DR-NET) set compatibility attributes
47h (DR-NET) get server configuration table
48h (DR-NET) set network error mode
49h (DR-NET) attach network
4Ah (DR-NET) detach network
4Bh (DR-NET) set default password
4Ch (DR-NET) get-set long timeout
4Dh (DR-NET) get parameter table
50h (DR-NET) get network information
53h get current time (see also INT 21/AH=2Ch)
54h set current time (see also INT 21/AH=2Dh)
55h get binary system date (see also INT 21/AH=2Ah)
56h set system date (see also INT 21/AH=2Bh)
57h allocate system flag
58h deallocate system flag
59h reserve memory in global area
5Ah lock physical drive
5Bh unlock physical drive
5Ch search path for executable file
5Dh load and execute command (see also INT 21/AH=4Bh)
5Eh get/set process exit code
5Fh set country information
60h get country information
63h truncate FCB file (see also INT 21/AH=28h)
64h create/update directory label
65h get directory label
66h get FCB date stamp and password mode
67h write extended FCB
68h set system date and time
69h get system date and time in binary
6Ah establish password for file access
6Bh get OS serial number
6Ch (DOS Plus v2.1) get/set program return code
6Dh get/set console mode
6Eh get/set string delimiter
6Fh write block to default console
70h write block to default list device
71h execute DOS-compatible function
74h set FCB time and date stamps
80h allocate memory
82h deallocate memory
83h poll I/O device
84h wait on system flag
85h set system flag
86h create message queue
87h open message queue
88h delete message queue
89h read from message queue
8Ah conditionally read from message queue
8Bh write to message queue
8Ch conditionally write to message queue
8Dh delay calling process
8Eh call process dispatcher (yield CPU)
8Fh terminate calling process (same as function 00h)
90h create a process
91h set calling process' priority
92h attach to default console
93h detach from default console
95h assign default console to process
96h interpret and execute commandline
97h resident procedure library
98h parse ASCII string into FCB (see also INT 21/AH=29h)
99h return default console
9Ah get address of system data (SYSDAT)
9Bh get system time and date
9Ch return calling process' descriptor
9Dh terminate process by name or PD address
9Eh attach to default list device
9Fh detach from default list device
A0h select default list device
A1h conditionally attach to default list device
A2h conditionally attach to default console
A3h get OS version number
A4h get default list device
A5h attach to default AUX
A6h detach from default AUX
A7h conditionally attach to default AUX
A8h set default AUX
A9h return default AUX
ACh read block from default AUX
ADh (DOS Plus v2.1) write block to default AUX
B0h configure default AUX
B1h get/set device control parameters
B2h send Break through default AUX
B3h allocate physical memory
B4h free physical memory
B5h map physical memory
B6h nondestructive message queue read
B7h timed wait on system flag
B8h get/set I/O port mapping
B9h set list device timeout
BAh set AUX timeout value
BBh execute XIOS service
BDh (DR Multiuser DOS) delay
FFh return 80386 to native mode
Values for DOS Plus v2.1 XIOS functions:
00h terminate program
01h ???
02h check for console input status
03h read character from console
04h write character to console
05h write character to list device
06h write character to auxiliary device
07h read cahracter from auxiliary device
0Fh get list device status
10h-14h reserved
15h device initialization
16h check console output status
17h-7Fh reserved
---BBC Acorn---
80h get XIOS version
81h get Tube semaphore
82h release Tube semaphore
83h select text/graphics
84h update B&W graphics rectangle
85h update color graphics rectangle
86h get/release/update mouse
87h get system error info
88h entry in CLOCK called by WatchDog RSP
89h BBC OSBYTE function
8Ah BBC OSWORD function
DR Multiuser DOS Error Return Codes:
00h no error
01h system call not implmented
02h illegal system call number
03h cannot find memory
04h illegal flag number
05h flag overrun
06h flag underrun
07h no unused Queue Descriptors
08h no free queue buffer
09h cannot find queue
0Ah queue in use
0Ch no free Process Descriptors
0Dh no queue access
0Eh empty queue
0Fh full queue
10h CLI queue missing
11h no 8087 in system
12h no unused Memory Descriptors
13h illegal console number
14h no Process Descriptor match
15h no console match
16h no CLI process
17h illegal disk number
18h illegal filename
19h illegal filetype
1Ah character not ready
1Bh illegal Memory Descriptor
1Ch bad return from BDOS load
1Dh bad return from BDOS read
1Eh bad return from BDOS open
1Fh null command
20h not owner of resource
21h no CSEG in load file
22h process Descriptor exists on Thread Root
23h could not terminate process
24h cannot attach to process
25h illegal list device number
26h illegal password
28h external termination occurred
29h fixup error upon load
2Ah flag set ignored
2Bh illegal auxilliary device number
----------E0----CL03-------------------------
INT E0 - DR Multiuser DOS - "A_READ" - READ CHARACTER FROM AUX DEVICE
CL = 03h
Return: AL = ASCII character
Notes: A_READ reads the next 8-bit character from the logical auxilliary
input device (AUXn:); control is not returned to the calling
process until a character has been read.
if another process owns AUX, this call blocks until the device becomes
available
SeeAlso: INT 21/AH=03h,INT E0/CL=04h,INT E0/CL=07h,INT E0/CL=A5h,INT E0/CL=ACh
----------E0----CL04-------------------------
INT E0 - DR Multiuser DOS - "A_WRITE" - WRITE CHARACTER TO AUX DEVICE
CL = 04h
DL = ASCII character
Return: nothing
Note: if another process owns AUX, this call blocks until the device becomes
available
SeeAlso: INT 21/AH=04h,INT E0/CL=03h,INT E0/CL=08h,INT E0/CL=A5h,INT E0/CL=ADh
----------E0----CL07-------------------------
INT E0 - DR Multiuser DOS - "A_STATIN" - GET INPUT STATUS OF AUX DEVICE
CL = 07h
Return: AL = status
00h not ready
FFh character available
SeeAlso: INT E0/CL=03h,INT E0/CL=08h
----------E0----CL08-------------------------
INT E0 - DR Multiuser DOS - "A_STATOUT" - GET OUTPUT STATUS OF AUX DEVICE
CL = 08h
Return: AL = status
00h not ready
FFh ready for output
SeeAlso: INT E0/CL=04h,INT E0/CL=07h
----------E0----CL59-------------------------
INT E0 - ConcCP/M,DR Multiuser DOS - "S_MEMORY" - RESERVE MEMORY IN GLOBAL AREA
CL = 59h
DX = size in bytes
Return: AX = FFFFh if failed
AX = other if successful
ES:BX -> reserved memory
----------E0----CL86-------------------------
INT E0 - ConcCP/M,DR Multiuser DOS - "Q_MAKE" - CREATE MESSAGE QUEUE
CL = 86h
DS:DX -> queue descriptor (see below)
Return: AX = status
0000h success
FFFFh failure
CX = error code
SeeAlso: INT E0/CL=87h
Format of queue descriptor:
Offset Size Description
00h 2 WORDs internal use, initialize to zeros
04h WORD flags
06h 8 BYTEs queue name
0Eh WORD length of message
10h WORD number of messages
12h 4 WORDs internal use, initialize to zeros
1Ah WORD offset in system area of buffer for messages
----------E0----CL87-------------------------
INT E0 - ConcCP/M,DR Multiuser DOS - "Q_OPEN" - OPEN MESSAGE QUEUE
CL = 87h
DS:DX -> queue parameter block (see below)
Return: AX = status
0000h success
FFFFh failure
CX = error code
SeeAlso: INT E0/CL=86h,INT E0/CL=89h
Format of queue parameter block:
Offset Size Description
00h WORD internal use, initialize to zero
02h WORD queue ID (set by INT E0/CL=87h)
04h WORD internal use, initialize to zero
06h WORD offset of queue message buffer
08h 8 BYTEs queue name
----------E0----CL89-------------------------
INT E0 - ConcCP/M,DR Multiuser DOS - "Q_READ" - READ MESSAGE QUEUE
CL = 89h
DS:DX -> queue parameter block (see INT E0/CL=87h)
Return: AX = status
0000h success
FFFFh failure
CX = error code
SeeAlso: INT E0/CL=87h,INT E0/CL=8Ah,INT E0/CL=8Bh
----------E0----CL8A-------------------------
INT E0 - ConcCP/M,DR Multiuser DOS - "Q_CREAD" - CONDITIONALLY READ MSG QUEUE
CL = 8Ah
DS:DX -> queue parameter block (see INT E0/CL=87h)
Return: AX = status
0000h success
FFFFh failure
CX = error code
SeeAlso: INT E0/CL=87h,INT E0/CL=89h,INT E0/CL=8Ch
----------E0----CL8B-------------------------
INT E0 - ConcCP/M,DR Multiuser DOS - "Q_WRITE" - WRITE MESSAGE QUEUE
CL = 8Bh
DS:DX -> queue parameter block (see INT E0/CL=87h)
Return: AX = status
0000h success
FFFFh failure
CX = error code
SeeAlso: INT E0/CL=89h,INT E0/CL=8Ch
----------E0----CL8C-------------------------
INT E0 - ConcCP/M,DR Multiuser DOS - "Q_CWRITE" - CONDITIONALLY WRITE MSG QUEUE
CL = 8Ch
DS:DX -> queue parameter block (see INT E0/CL=87h)
Return: AX = status
0000h success
FFFFh failure
CX = error code
SeeAlso: INT E0/CL=8Ah,INT E0/CL=8Bh
----------E0----CL8E-------------------------
INT E0 - ConcCP/M,DR Multiuser DOS - "P_DISPATCH" - CALL DISPATCHER
CL = 8Eh
DX = FFFFh (optional) to force dispatch
Return: nothing
Note: if DX=FFFFh, a dispatch is forced even if no other process is ready
SeeAlso: INT E0/CL=91h
----------E0----CL91-------------------------
INT E0 - ConcCP/M,DR Multiuser DOS - "P_PRIORITY" - SET PROCESS PRIORITY
CL = 91h
DL = new priority (00h highest to FFh lowest)
Note: sets priority of calling process; transient processes are initialized
to priority C8h
SeeAlso: INT E0/CL=8Eh
----------E0----CL93-------------------------
INT E0 - ConcCP/M,DR Multiuser DOS - "C_DETACH" - DETACH FROM DEFAULT CONSOLE
CL = 93h
Return: AX = status
0000h successfully detached
FFFFh detach failed
----------E0----CLA5-------------------------
INT E0 - DR Multiuser DOS - "A_ATTACH" - ATTACH AUX DEVICE
CL = A5h
Desc: attaches the default auxiliary device to the calling process unless
it is already attached to another process, in which case the call
blocks until the device becomes available
Note: this call should be used before attempting to read or write from
the AUX device; however, the I/O calls internally call this function
to ensure device ownership
SeeAlso: INT E0/CL=03h,INT E0/CL=04h,INT E0/CL=A6h,INT E0/CL=A7h,INT E0/CL=A8h
SeeAlso: INT E0/CL=ACh,INT E0/CL=ADh,INT E0/CL=B0h
----------E0----CLA6-------------------------
INT E0 - DR Multiuser DOS - "A_DETACH" - DETACH FROM AUX DEVICE
CL = A6h
Return: AX = status
0000h successfully detached
FFFFh detach failed
CX = error code
SeeAlso: INT E0/CL=A5h,INT E0/CL=A7h
----------E0----CLA7-------------------------
INT E0 - DR Multiuser DOS - "A_CATTACH" - CONDITIONALLY ATTACH TO AUX DEVICE
CL = A7h
Return: AX = status
0000h attached
FFFFh unable to attach
Desc: attaches the default auxiliary device to the calling process if it is
available
Note: does not block if the device is already in use
SeeAlso: INT E0/CL=A5h,INT E0/CL=A6h,INT E0/CL=A8h,INT E0/CL=B0h
----------E0----CLA8-------------------------
INT E0 - DR Multiuser DOS - "A_SET" - SET DEFAULT AUX DEVICE NUMBER
CL = A8h
DL = auxiliary device number
Return: AX = status
0000h successful
FFFFh failed
CX = error code
SeeAlso: INT E0/CL=A5h,INT E0/CL=A9h
----------E0----CLA9-------------------------
INT E0 - DR Multiuser DOS - "A_GET" - GET DEFAULT AUX DEVICE NUMBER
CL = A9h
Return: AL = current default auxiliary device number
SeeAlso: INT E0/CL=A8h
----------E0----CLAC-------------------------
INT E0 - DR Multiuser DOS - "A_READBLK" - READ STRING FROM AUX DEVICE
CL = ACh
DS:DX -> character control block (CHCB) (see below)
Return: AX = number of characters read
Desc: read characters from the default auxiliary (AUXn:) device into a buffer
until the buffer is full or the device is no longer ready
Notes: if the device is initially not ready, blocks until at least one
character has been read
if another process owns AUX, this call blocks until the device becomes
available
SeeAlso: INT E0/CL=03h,INT E0/CL=A5h,INT E0/CL=ADh
Format of character control block (CHCB):
Offset Size Description
00h DWORD pointer to character buffer
04h WORD length of character buffer
----------E0----CLAD-------------------------
INT E0 - DR Multiuser DOS - "A_WRITEBLK" - WRITE STRING TO AUX DEVICE
CL = ADh
DS:DX -> character control block (see INT E0/CL=ACh)
Return: AX = number of characters written
Note: does not return until at least one character has been written
SeeAlso: INT E0/CL=04h,INT E0/CL=A5h,INT E0/CL=ACh
----------E0----CLB0-------------------------
INT E0 - DR Multiuser DOS - "A_CONFIG" - GET/SET AUX DEVICE PARAMETERS
CL = B0h
DX:DX -> AUX device parameter block (see below)
Return: AX = status
0000h successful
parameter block updated
FFFFh failed
CX = error code
SeeAlso: INT E0/CL=A5h,INT E0/CL=B1h
Format of AUX device parameter block:
Offset Size Description
00h BYTE function (00h get, 01h set)
01h BYTE baud rate (see below) FFh = don't change/unknown
02h BYTE parity
00h none
01h odd
02h none
03h even
04h stick parity bit
FFh don't change/unknown
03h BYTE stop bits (00h one, 01h 1.5, 02h two, FFh unknown/don't change)
04h BYTE data bits (05h-08h or FFh unknown/don't change)
05h BYTE handshake (00h none, 01h DTS/DSR, 02h RTS/CTS, 04h XON/XOFF,
FFh unknown/don't change)
06h BYTE XON character, FFh unknown/don't change
07h BYTE XOFF character, FFh unknown/don't change
Values for baud rate:
00h = 50 baud
01h = 62.5 baud
02h = 75 baud
03h = 110 baud
04h = 134.5 baud
05h = 150 baud
06h = 200 baud
07h = 300 baud
08h = 600 baud
09h = 1200 baud
0Ah = 1800 baud
0Bh = 2000 baud
0Ch = 2400 baud
0Dh = 3600 baud
0Eh = 4800 baud
0Fh = 7200 baud
10h = 9600 baud
11h = 19200 baud
12h = 38400 baud
13h = 56000 baud
14h = 76800 baud
15h = 115200 baud
----------E0----CLB1-------------------------
INT E0 - DR Multiuser DOS - "A_CONTROL" - GET/SET AUX CONTROL PARAMETERS
CL = B1h
DS:DX -> AUX device control block (see below)
Return: AX = status
0000h successful
control block updated
FFFFh failed
CX = error code
SeeAlso: INT E0/CL=B0h,INT E0/CL=B2h
Format of AUX device control block:
Offset Size Description
00h BYTE function (00h get, 01h set)
01h BYTE DTR state (00h low, 01h high, FFh unknown/don't change)
02h BYTE RTS state (00h low, 01h high, FFh unknown/don't change)
03h BYTE DSR state (00h low, 01h high, FFh unknown/don't change)
04h BYTE CTS state (00h low, 01h high, FFh unknown/don't change)
05h BYTE DCD state (00h low, 01h high, FFh unknown/don't change)
06h BYTE RI state (00h inactive, 01h active, FFh unknown/don't change)
----------E0----CLB2-------------------------
INT E0 - DR Multiuser DOS - "A_BREAK" - SEND BREAK TO AUX DEVICE
CL = B2h
DX = duration of break in system ticks (0001h-FFFFh)
Return: AX = status
0000h successful
break signal completed
FFFFh failed
CX = error code
Note: if the AUX device is currently owned by another process, this call will
block until the device becomes available
SeeAlso: INT E0/CL=A5h,INT E0/CL=B1h
----------E0----CLBD-------------------------
INT E0 - DR Multiuser DOS - "P_DELAY" - DELAY EXECUTION
CL = BDh
DX = delay in system ticks
Return: after the delay elapses
Notes: the length of a system tick is installation-dependent (typically
1/50 or 1/60 second); the length may be determined by reading the
TICKSPERSEC value from the system data segment
the actual delay before the process is rescheduled to run may be up to
one tick longer than requested; the delay between rescheduling and
actual execution cannot be predicted if higher-priority processes
are awaiting a turn at the CPU
----------E1---------------------------------
INT E1 - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC
BASIC.COM/BASICA.COM do not restore vector on termination
----------E1---------------------------------
INT E1 - PC Cluster Disk Server Information
SeeAlso: INT E2
----------E2---------------------------------
INT E2 - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC
BASIC.COM/BASICA.COM do not restore vector on termination
----------E2---------------------------------
INT E2 - PC Cluster Program
----------E3---------------------------------
INT E3 - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC
BASIC.COM/BASICA.COM do not restore vector on termination
----------E40005-----------------------------
INT E4 - Logitech Modula v2.0 - MonitorEntry
AX = 0005h
BX = priority
SeeAlso: AX=0006h
----------E40006-----------------------------
INT E4 - Logitech Modula v2.0 - MonitorExit
AX = 0006h
SeeAlso: AX=0005h
----------E4---------------------------------
INT E4 - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC
BASIC.COM/BASICA.COM do not restore vector on termination
----------E5---------------------------------
INT E5 - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
BASIC.COM/BASICA.COM do not restore vector on termination
----------E6---------------------------------
INT E6 - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC
BASIC.COM/BASICA.COM do not restore vector on termination
----------E7---------------------------------
INT E7 - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC
BASIC.COM/BASICA.COM do not restore vector on termination
----------E8---------------------------------
INT E8 - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
BASIC.COM/BASICA.COM do not restore vector on termination
----------E9---------------------------------
INT E9 - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC
BASIC.COM/BASICA.COM do not restore vector on termination
----------EA---------------------------------
INT EA - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC
BASIC.COM/BASICA.COM do not restore vector on termination
----------EB---------------------------------
INT EB - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC
BASIC.COM/BASICA.COM do not restore vector on termination
----------EC---------------------------------
INT EC - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC
BASIC.COM/BASICA.COM do not restore vector on termination
----------EC---------------------------------
INT EC - used by Alloy NTNX
----------EC---------------------------------
INT EC - Exact - RUNTIME INTERFACE MULTIPLEXOR
AX = function number (0000h to 0140h)
STACK: DWORD address to return to
any arguments required by function
Return: STACK: return address popped, but otherwise unchanged
Notes: this is the interface from applications to the runtime system by Exact
Automatisering B.V. of the Netherlands. By using this interrupt,
it can provide DLL-style capabilities under MSDOS.
the interrupt handler removes the return address and flags placed on
the stack by the INT EC, then jumps to the appropriate function
----------ED---------------------------------
INT ED - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
BASIC.COM/BASICA.COM do not restore vector on termination
INT 80 through INT ED are modified but not restored by Direct Access
v4.0, and may be left dangling by other programs written with the
same version of compiled BASIC
SeeAlso: INT EC"BASIC",INT EE"BASIC"
----------EE---------------------------------
INT EE - IBM ROM BASIC - used while in interpreter
Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
BASIC.COM/BASICA.COM do not restore vector on termination
SeeAlso: INT ED"BASIC",INT EE"BASIC"
----------EF---------------------------------
INT EF - BASIC - ORIGINAL INT 09 VECTOR
Note: BASIC.COM/BASICA.COM do not restore vector on termination
SeeAlso: INT EE"BASIC",INT F0"BASIC"
----------EF----CX0473-----------------------
INT EF - GEM - INTERFACE
CX = 0473h
DS:DX -> GEM parameter block
----------F0---------------------------------
INT F0 - BASICA.COM, GWBASIC, compiled BASIC - ORIGINAL INT 08 VECTOR
Note: BASICA.COM does not restore vector on termination
SeeAlso: INT EF"BASIC"
----------F1---------------------------------
INT F1 - reserved for user interrupt
----------F1---------------------------------
INT F1 - SPEECH.COM - CONVERT TEXT STRING TO SPEECH
DS:BX -> '$'-terminated text string
Note: SPEECH.COM is a resident text-to-speech converter by Douglas Sisco
----------F1---------------------------------
INT F1 - Andy C. McGuire SPEECH.COM/SAY.COM
SeeAlso: INT F2"SPEECH"
----------F1---------------------------------
INT F1 - AQUEDUCT, PIPELINE - GET DATA AREA ADDRESS
Return: AX:BX -> data area
Notes: AQUEDUCT and PIPELINE are TSRs by James W. Birdsall to connect COM1
and COM2 in software
The installation check consists of testing for the following signature
immediately preceding the interrupt handler: "JWBtvv" where 't' is
either "A" for AQUEDUCT or "P" for PIPELINE and "vv" is a two-digit
version number
----------F2---------------------------------
INT F2 - reserved for user interrupt
----------F2---------------------------------
INT F2 - Andy C. McGuire SPEECH.COM/SAY.COM
SeeAlso: INT F1"SPEECH"
----------F2---------------------------------
INT F2 - ICCTSR 1.0 - ImageCapture COLOR Developer's Kit - API
AH = function
01h power up
02h power down
03h set controls
04h capture image
05h display image
06h read file
07h write file
08h write array
09h read pixel
0Ah write pixel
0Bh check if VGA present
0Ch set video mode
0Dh check for keystroke
0Eh delay
???
Return: ???
Program: ImageCapture is a product of International Computers
SeeAlso: INT F3"ICCTSR"
----------F3---------------------------------
INT F3 - reserved for user interrupt
----------F3---------------------------------
INT F3 - SoundBlaster - POINTER TO ECHO VALUE
Note: this is not a vector, but a pointer to a DWORD containing the echo
value selected with SET-ECHO.EXE
SeeAlso: INT 2F/AX=FBFBh
----------F3---------------------------------
INT F3 - ICCTSR 1.0 - HANDSHAKE ID VECTOR
Program: ImageCapture is a product of International Computers
SeeAlso: INT F2"ICCTSR"
----------F4---------------------------------
INT F4 - reserved for user interrupt
----------F4---------------------------------
INT F4 - DoubleDOS - GIVE UP REST OF CURRENT CLOCK TICK AND ALL OF NEXT TICK
SeeAlso: INT 21/AH=EEh"DoubleDOS",INT FE"DoubleDOS"
----------F5---------------------------------
INT F5 - reserved for user interrupt
----------F5---------------------------------
INT F5 - DoubleDOS - ???
----------F6---------------------------------
INT F6 - reserved for user interrupt
----------F6---------------------------------
INT F6 - DoubleDOS - ???
----------F7---------------------------------
INT F7 - reserved for user interrupt
----------F7---------------------------------
INT F7 - DoubleDOS - ???
----------F700-------------------------------
INT F7 - FSBBS 2.0 - CONFIGURATION RECORD
AH = 00h
AL = function
00h get configuration record
Return: DS:DX -> configuration record
01h set configuration record
02h get path for option
DS:DX -> option name
Return: DS:DX -> path
03h determine whether configuration record set
Return: AX = status
0000h set
0001h not yet set
04h get link state
Return: AX = state
0000h unlinked
0001h linked
Notes: this information is preliminary and still subject to change
all of the INT F7 calls for FSBBS are used for interprogram
communication between the BBS kernel and the programs it spawns
SeeAlso: AH=01h
----------F701-------------------------------
INT F7 - FSBBS 2.0 - USER RECORD
AH = 01h
AL = function
00h get user record for user currently online
Return: DS:DX -> user record
01h set user record
DS:DX -> user record
SeeAlso: AH=00h,AH=02h
----------F702-------------------------------
INT F7 - FSBBS 2.0 - GET ACCOUNT NAME
AH = 02h
Return: DS:DX -> 8-character blank-padded account name
SeeAlso: AH=01h
----------F703-------------------------------
INT F7 - FSBBS 2.0 - TERMINAL NUMBER
AH = 03h
AL = function
00h get terminal index number
Return: DX = index number
01h set terminal index number
DX = terminal index
----------F704-------------------------------
INT F7 - FSBBS 2.0 - PASSDATA BUFFER
AH = 04h
AL = function
00h get PassData buffer contents
DS:DX -> buffer for PassData contents
01h set PassData contents
DS:DX -> buffer containing new PassData
CH = length of data in buffer
----------F705-------------------------------
INT F7 - FSBBS 2.0 - TIMER FUNCTIONS
AH = 05h
AL = function
00h get time remaining
Return: DX = number of minutes remaining
01h get current time
Return: DS:DX -> 8-character time string
02h increment time
DX = number of additional minutes
03h decrement time
DX = number of minutes
SeeAlso: AH=06h
----------F706-------------------------------
INT F7 - FSBBS 2.0 - FUNCTION AVAILABILITY
AH = 06h
AL = function
00h determine whether function is available
DX = index of function
01h set function availability
DX = index of function
???
SeeAlso: AH=05h,AH=07h
----------F707-------------------------------
INT F7 - FSBBS 2.0 - DUMP FUNCTIONS
AH = 07h
AL = function
00h get current dump mode
Return: DL = mode
01h set dump mode
DL = mode
SeeAlso: AH=06h
----------F8---------------------------------
INT F8 - TANDY??? - 100 HZ INTERRUPT
SeeAlso: INT FA"USART"
----------F8---------------------------------
INT F8 - DoubleDOS - ???
----------F9---------------------------------
INT F9 - reserved for user interrupt
----------F9---------------------------------
INT F9 - DoubleDOS - ???
----------FA---------------------------------
INT FA - TANDY??? - SERIAL PORT USART INTERRUPT
SeeAlso: INT F8"100 HZ",INT FB"USART"
----------FA---------------------------------
INT FA - DoubleDOS - TURN OFF TIMESHARING
SeeAlso: INT 21/AH=EAh"DoubleDOS",INT FB"DoubleDOS"
----------FB---------------------------------
INT FB - TANDY??? - KEYBOARD USART RECEIVE INTERRUPT
SeeAlso: INT FA"USART"
----------FB---------------------------------
INT FB - DoubleDOS - TURN ON TIMESHARING
SeeAlso: INT 21/AH=EBh"DoubleDOS",INT FA"DoubleDOS"
----------FC---------------------------------
INT FC - reserved for user interrupt
----------FC---------------------------------
INT FC - DoubleDOS - GET CURRENT SCREEN BUFFER ADDRESS
Return: ES = segment of display buffer
Note: the display buffer may be moved if multitasking is enabled
SeeAlso: INT 21/AH=ECh"DoubleDOS",INT FB"DoubleDOS"
----------FD---------------------------------
INT FD - reserved for user interrupt
----------FD---------------------------------
INT FD - DoubleDOS - ???
----------FE---------------------------------
INT FE - AT/XT286/PS50+ - destroyed by return from protected mode
SeeAlso: INT FF"XT286"
----------FE---------------------------------
INT FE - DoubleDOS - GIVE UP TIME
AL = number of 55ms time slices to give away
SeeAlso: INT 21/AH=EEh"DoubleDOS",INT F4"DoubleDOS"
----------FE---------------------------------
INT FE - Turbo Debugger 8086 v2.5+ - OVERLAY MANAGER
SeeAlso: INT 3F
----------FF---------------------------------
INT FF - AT/XT286/PS50+ - destroyed by return from protected mode
SeeAlso: INT FE"XT286"
----------FF---------------------------------
INT FF - Z100 - WARM BOOT
SeeAlso: INT 40"Z100"
---------------------------------------------
Please redistribute the following files unmodified as a group, in a pair of
archives named INTER33A and INTER33B (preferably the original authenticated
PKZIP archives):
INTERRUP.1ST the read-me file, containing credits, availability info
INTERRUP.A INT 00 through INT 14
INTERRUP.B INT 15 through INT 1F
INTERRUP.C INT 20 through INT 21/7F
INTERRUP.D INT 21/80 through INT 2E
INTERRUP.E INT 2F through INT 2F/BF
INTERRUP.F INT 2F/C0 through INT 4F
INTERRUP.G INT 50 through INT 67
INTERRUP.H INT 68 through INT FF
INTERRUP.PRI a brief introduction to interrupts
INTPRINT.COM a simple formatter that also generates a list summary
INTPRINT.DOC instructions for INTPRINT
GLOSSARY.LST a glossary of terms, abbreviations, and acronyms
MEMORY.LST format of the BIOS data area
The following files should be distributed in an archive called INTER33C:
INT.COM invoke interrupts from commandline
INT2HLP.BAT Perl script to convert list into QuickHelp database
INT2GUID.* convert list into TurboPower GUIDE or POPHELP database
INT2QH.* program to convert list into QuickHelp database
INTHELP.* convert list into TurboPower GUIDE database
INTLIST.E Epsilon extension for handling list
INTPRINT.C source code for INTPRINT
This compilation is Copyright (c) 1989,1990,1991,1992,1993 Ralf Brown
---------------------------------------------
ARPA: ralf@cs.cmu.edu
UUCP: {ucbvax,harvard}!cs.cmu.edu!ralf
BIT: ralf%cs.cmu.edu@carnegie
FIDO: Ralf Brown 1:129/26.1
or post a message to me in the DR_DEBUG echo (I probably won't see it
unless you address it to me)
CIS: >INTERNET:ralf@cs.cmu.edu